var foo = '1',
bar = '2';
console.log(foo, bar, window.foo); //1, 2, undefined
(function(foo){
console.log(foo, bar); //2, 2
})(bar);
关于上面的代码,我有两个微不足道的问题:
为什么是
window.foo
未定义的?默认情况下不是所有全局变量都附加到窗口对象吗?为什么
foo ===
2 在闭包内?我知道我正在传递bar
带有别名的原始foo
文件2
,但在函数范围之外foo
仍然是1
. 据我所知,原件foo
也可以从封闭件内部访问。“新 foo”是否被优先考虑,因为它作为参数传递给 IIFE?