【发布时间】:2016-10-15 14:20:14
【问题描述】:
AFAIK,变量声明在定义它们的上下文中被提升,但是在下面的代码中,taken from here
var foo = 1;
function bar() {
if (!foo) {
var foo = 10;
}
alert(foo);
}
bar();
if(!foo) 计算结果为 true 但为什么呢?我的意思是 var foo 在 foo 的上下文中评估 if(!foo) 之前已经存在于该语句中var foo = 10 因此 if(!foo) 应该解析为 if(!true),进一步解析为 if(false) 这意味着不应执行 if 块但 @ 987654331@
评估为真,因此 if 块中的代码被执行并警告 10
谁能告诉我为什么以及如何评估 if 条件?
【问题讨论】:
-
你把我弄糊涂了
-
从快速浏览链接的文章中,那里得到了解释..
标签: javascript javascript-objects