关于JS中变量的作用域-实例
2015-02-15 14:05
183 查看
先看问题,如下,自己运行一下吧!
分析:首先,所有的全局变量都是window的属性,如var _qyzA = 1;等价于window._qyzA = 1;
其次,所有的变量的声明都在作用域的顶部,如alert("_qyzA"); var _qyzA;
相当于var _qyzA;alert("_qyzA");这是由于JavaScript引擎首先会扫描所有的变量声明,然后将这些变量声明都移动到顶部。
最后,虽然变量声明被提前了,但变量并没有赋值,因为这行代码包括了变量声明和变量赋值。当变量声明和变量赋值在一起用的时候,
JavaScript引擎会自动将其分为两部分,以便将变量声明提前,不将赋值提前是因为其有可能会影响代码执行时发生不可预期的结果。
故源代码相当于:
if (!('_qyzA' in window)) { var _qyzA = 1; } alert(_qyzA);//undefined
分析:首先,所有的全局变量都是window的属性,如var _qyzA = 1;等价于window._qyzA = 1;
其次,所有的变量的声明都在作用域的顶部,如alert("_qyzA"); var _qyzA;
相当于var _qyzA;alert("_qyzA");这是由于JavaScript引擎首先会扫描所有的变量声明,然后将这些变量声明都移动到顶部。
最后,虽然变量声明被提前了,但变量并没有赋值,因为这行代码包括了变量声明和变量赋值。当变量声明和变量赋值在一起用的时候,
JavaScript引擎会自动将其分为两部分,以便将变量声明提前,不将赋值提前是因为其有可能会影响代码执行时发生不可预期的结果。
故源代码相当于:
var _qyzA; if (!('_qyzA' in window)) { _qyzA = 1; } alert(_qyzA); //undefined
相关文章推荐
- 关于JS变量的作用域,作用域链与闭包
- JS利用prototype改变元素实例的方法的变量作用域
- js变量和作用域的讲解和实例
- js class模型 关于 初始化key值为非基本类型是 实例之间是引用该变量
- 关于js变量作用域
- js面试题,关于变量提升,作用域,全局变量
- 关于js 变量作用域的小记录
- 关于javascript 回调函数中变量作用域的讨论
- Java-关于子类是否继承了父类的private实例变量
- 关于JS变量声明的小细节
- 注意细节 js变量作用域
- [JavaScript]类之四---关于回调函数中变量作用域的讨论(精)
- 注意细节js变量作用域
- 关于JS的作用域
- 关于变量的作用域03
- 关于变量的作用域04想要改变一个对象属性的正确方法
- 关于js界面库,Ext库实例代码
- js变量作用域及可访问性的探讨
- 关于js中类的静态属性和实例属性的理解
- Js整理备忘(01)—— 变量作用域