那些容易忽略的事3-(变量提升和函数提升)
2016-07-08 11:59
232 查看
1、变量提升:只要变量在代码中进行了声明,无论它在哪个位置上进行声明, js引擎都会将它的声明放在范围作用域的顶部;
2、函数提升:只要函数在代码中进行了声明,无论它在哪个位置上进行声明, js引擎都会将它的声明放在范围作用域的顶部;
从上可以看出,变量或函数声明都会别放到当前作用域的顶部,那么问题来了:如果变量和函数重名那么熟轻熟重呢?谁的优先等级更高呢?
总结:变量申明和函数申明重名时,
不管二者声明的顺序,函数声明会覆盖变量声明,也就是说,此时a的值是声明的函数function a() {}。
注意:如果在变量声明的同时初始化a,或是之后对a进行赋值,此时a的值是变量的值。
也就是说:a===undefined ? a===函数 :a===变量
console.log(a); //undefined var a;
2、函数提升:只要函数在代码中进行了声明,无论它在哪个位置上进行声明, js引擎都会将它的声明放在范围作用域的顶部;
console.log(b); //function b(){} function b(){};
从上可以看出,变量或函数声明都会别放到当前作用域的顶部,那么问题来了:如果变量和函数重名那么熟轻熟重呢?谁的优先等级更高呢?
var a; function a(){}; console.log(a); //function a(){} function b(){}; var b; console.log(b); //function b(){} var c=1; function c(){} console.log(c); //1 function d(){}; var d=1; console.log(d); //1
总结:变量申明和函数申明重名时,
不管二者声明的顺序,函数声明会覆盖变量声明,也就是说,此时a的值是声明的函数function a() {}。
注意:如果在变量声明的同时初始化a,或是之后对a进行赋值,此时a的值是变量的值。
也就是说:a===undefined ? a===函数 :a===变量
相关文章推荐
- Android实现带有边框的ListView和item的方法
- Service 有哪些启动方法,有什么区别,怎样停用 Service?
- 抓安卓app网络包的方法
- 编译型语言,解释型语言和脚本语言的对比
- 搭建高可用MongoDB集群(二): 副本集
- plsql 登录 01034 27101 , startup ORA-00119 ,ORA-00132
- matlab自学经验成果分享 取复数的实部的函数
- HTTP/2 带来的新颖
- iOS RSA加密和解密
- 怎么样防止Sql注入?
- 得到Android屏幕高度,宽度
- google protocol buffer 使用之 .proto 定义规则
- sphinx分布式配置+中文分词
- OpenSSL 安装,使用 用于加密生成公钥私钥文件
- maven: 生命周期
- android 解决ViewPager加载大量图片内存溢出问题
- 软件测试基础——边界值分析
- mysql 关于where和having
- android之fragment的两种使用方式(add和replace方式切换)
- Windows下的Objective-C集成开发环境(IDE)