js中函数提升及var变量提示
其中,在javascript中,函数声明及var声明的变量会得到提升。但是函数声明会先于var声明的变量被提升。即便function写在后面。
看下面的例子:
var aa = 221;
function aa(){
alert(111);
}
console.log(aa); //221
说明了函数声明先被提升了。而后面的var aa声明覆盖了aa函数,所以打印出来的是 ------ 221。
上面的语句在浏览器解析的时候其实是这样的。
function aa(){
alert(111);
}
var aa;
aa = 221;
console.log(aa);
这里补充一点,函数声明的函数名与普通对象的变量名没有什么区别(高级编程第三版)。说明函数名可以被变量覆盖。
function aa(){
alert(111);
}
var aa = 221;
console.log(aa); //
这样执行效果也是一样的。
解析:
function aa(){
alert(111);
}
var aa;
aa = 221;
console.log(aa);
同时,function也是对象,说明可以在它的身上定义属性和方法。
在它身上定义的方法叫做类方法,或者叫静态方法。
只属于这个类所有。类的实例不能够调用。
例子:
function aa(){
alert(111);
}
aa.bb = function(){
alert('我是静态方法');
}
aa.bb(); //弹出“我是静态方法”
说明函数可以定义方法。
function aa(){
alert(111);
}
aa.bb = function(){
alert('我是静态方法');
}
var a = new aa(); 这句话弹出111,即运行了aa函数。
a.bb(); // Uncaught TypeError: a.bb is not a function(…)
说明在JS中类的实例不能调用类方法。
function aa(){
alert(111);
}
aa.bb = function(){
alert('我是静态方法');
}
aa.c={
cc:5
}
console.log(aa.c); //Object {cc: 5}
给函数对象定义属性。
js中函数提升及var变量提示的更多相关文章
- js中函数声明先提升还是变量先提升
根据官方书籍<你不知道的javascript>(上卷)中写道: "函数会首先被提升,然后才是变量". 例子: console.log(foo); function fo ...
- js中的全局变量和静态变量的使用, js 的调试?- 如果js出错, js引擎 就会停止, 这会 导致 后面的 html中 refer 该函数时, 会报错 函数为定义!!
效果里面的函数, 如show, hide,slideDown等, 这些都叫 "效果"函数, 但是里面可以包含动画, 也可以 不包含动画. 动画,是指 元素 的内容 是 逐渐 显示/ ...
- 关于js中函数的调用问题
js中函数的调用方法 1.直接调用 函数名(参数): 2.通过指向函数的变量去调用 例如: var myval = 函数名: 此刻 myval是指向函数的一个指针: myval(实际参数):此刻调用的 ...
- JS中函数参数和函数返回值的理解
函数本质就是功能的集合 JS中函数是对象,因此,函数名实际上仅仅是一个指向函数对象的指针,不会与某个函数绑定,所以,JS中没有重载(重载就是通过传递不同类型的参数,使两个相同函数名的函数执行不同的功能 ...
- js中函数传参的情况
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...
- 对JS中函数的理解
函数本质就是功能的集合 JS中函数是对象,因此,函数名实际上仅仅是一个指向函数对象的指针,不会与某个函数绑定,所以,JS中没有重载(重载就是通过传递不同类型的参数,使两个相同函数名的函数执行不同的功能 ...
- JS中函数void()
<a href="javascript:void(0)">hello</a>/* * JS中函数void()的运用大体是这种新式; * void()是运算符 ...
- js中函数的参数为函数的情况即回调函数
js中函数的参数可以是数组对象也可以是函数,当参数为函数时我们叫做回调函数 //定义回调函数function B() { console.log("函数B")setTimeout( ...
- Javascript中函数提升和变量提升
词法分析 词法分析方法: js运行前有一个类似编译的过程即词法分析,词法分析主要有三个步骤: 分析参数 再分析变量的声明 分析函数说明 具体步骤如下: 函数在运行的瞬间,生成一个活动对象(Active ...
随机推荐
- 打包AAC码流到FLV文件
AAC编码后数据打包到FLV很简单. 1. FLV音频Tag格式 字节位置 意义0x08, ...
- python日志轮转RotatingFileHandler在django中的一个bug
简介 大量过时的日志会占用硬盘空间,甚至长时间运行不注意会占满硬盘导致宕机,那么就可以使用内建logging模块根据文件大小(logging.handlers.RotatingFileHandler) ...
- Linux负载均衡软件之LVS
一. LVS简介 LVS是Linux Virtual Server的简称,也就是Linux虚拟服务器, 是一个由章文嵩博士发起的自由软件项目,它的官方站点是linuxvirtualserver.org ...
- unittest单元测试生成HTML测试报告
前言: HTMLTestRunner 是 Python 标准库的 unittest 模块的一个扩展,它可以生成 HTML的 测试报告. 一.下载HTMLTestRunnerNew.py文件: 下载链接 ...
- Velocity常用标签的讲解
Velocity是一个基于java的模板引擎(template engine).它允许任何人仅仅简单的使用模板语言(template language)来引用由java代码定义的对象. 当Veloci ...
- 对spring、AOP、IOP的理解 (转)
spring 的优点?1.降低了组件之间的耦合性 ,实现了软件各层之间的解耦2.可以使用容易提供的众多服务,如事务管理,消息服务等3.容器提供单例模式支持4.容器提供了AOP技术,利用它很容易实现如权 ...
- ES6学习之正则扩展
RegExp正则函数 var reg = new RegExp("abc","igm"); //等价于 var reg = new RegExp(/abc/ig ...
- SpringSecurity04 利用JPA和SpringSecurity实现前后端分离的认证和授权
1 环境搭建 1.1 环境说明 JDK:1.8 MAVEN:3.5 SpringBoot:2.0.4 SpringSecurity:5.0.7 IDEA:2017.02旗舰版 1.2 环境搭建 创建一 ...
- 9、IPA通路分析相关网页教程
IPA FAQ: http://ingenuity.force.com/ipa/IPATutorials# ####有各种相关教程和帮助文件. IPA 分析结果展示: http://www.lucid ...
- Linux 静态库(.a)转换为动态库(.so)
Linux 静态库转换为动态库 参考 http://blog.csdn.net/moxuansheng/article/details/5812410 首先将.a文件转为.so文件是可以实现的 原因是 ...