3 回答
TA贡献1794条经验 获得超8个赞
delete
var
var g_a = 1; //create with var, g_a is a variable delete g_a; //return falseconsole.log(g_a); //g_a is still 1
var
g_b = 1; //create without var, g_b is a property delete g_b; //return trueconsole.log(g_b); //error, g_b is not defined
技术解释
1.使用 var
g_a
var
let
window
).
eval
var
2.不使用 var
var
var
window
注记
重要的是要记住 var
声明是“悬挂的”-也就是说,它们总是被认为发生在它们所在的范围的开头-尽管不是在 var
语句-保留在原来的位置。所以在下面的代码中, a
是来自 可变环境而不是 window
属性及其值为 10
在守则末尾: function test() { a = 5; var a = 10; }
上述讨论是在“严格模式”未启用时进行的。在使用“严格模式”时,查找规则有一点不同,而在没有“严格模式”的情况下解析为窗口属性的词法引用会在“严格模式”下引发“未声明变量”错误。我不太明白这是在哪里指定的,但浏览器的行为方式。
添加回答
举报