标签:-- 判断 pre var javascrip 作用域 undefined alert efi
alert("a" in window);
var a;
虽然这个声明是在alert之后,但alert弹出的依然是true,这是因为JavaScript引擎首先会扫描所有的变量声明,然后将这些变量声明移动到顶部,最终的代码效果是这样的:
var a;
alert("a" in window);
var a; //声明
a = 1; //初始化赋值
当变量声明和赋值在一起用的时候,JavaScript引擎会自动将它分为两部以便将变量声明提前,不将赋值的步骤提前是因为他有可能影响代码执行出不可预期的结果
var a;
if (!("a" in window)) {
a = 1;
}
alert(a);
那么题目的意思就是:首先声明a,然后判断a是否在存在,如果不存在就赋值为1,很明显a永远在window里存在,这个赋值语 句永远不会执行,所以结果是undefined
"if (!(""a"" in window)) { var a = 1; } alert(a); 为什么结果是undefined"
标签:-- 判断 pre var javascrip 作用域 undefined alert efi
原文地址:https://www.cnblogs.com/yujiao-99/p/12656389.html