关于JS中变量的作用域-实例
先看问题,如下,自己运行一下吧!
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
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。