【发布时间】:2015-07-12 02:58:44
【问题描述】:
为什么console.log(foo) 产生undefined 而不是'bar' in —
var foo = 'bar';
(function() {
console.log(foo);
if(foo === 'baz') {
var foo = 'qux';
}
})();
——但如果 var foo 被替换为 foo,则生成 'bar'?我知道重新声明变量是不好的做法,但是无论如何都不会对 var foo = 'qux' 进行评估,即使是这样,它也不应该做任何事情,对吧?
【问题讨论】:
-
其他重复:Javascript variable scope return undefined 和 good article 关于该主题。
标签: javascript scope hoisting