【发布时间】:2023-04-08 04:02:01
【问题描述】:
我在一次采访中得到了这个问题,我很好奇为什么这两个输出不同的东西:
(function() {
console.log(bar);
console.log(baz);
foo();
function foo() {
console.log('aloha');
}
var bar = 2;
baz = 3;
})();
输出:
undefined
Uncaught ReferenceError: baz is not defined
而:
(function() {
console.log(bar);
console.log(window.baz);
foo();
function foo() {
console.log('aloha');
}
var bar = 2;
baz = 3;
})();
输出:
undefined
undefined
'aloha'
baz 和 window.baz 的引用方式有何不同?我虽然全局变量自动附加到窗口?
【问题讨论】:
-
我认为真正的问题是为什么记录
bar不会引发错误。至少我对此很好奇。 -
当您的问题只是关于
baz和window.baz之间的区别时,为什么还需要发布所有其他代码? -
因为这就是我被逐字询问的内容。我想我可以删除其他的东西。
-
面试官试图通过扔一些不相关的垃圾来迷惑你,让你很难受。当你问 SO 时,你的目标应该是完全相反的。
标签: javascript window global-variables hoisting