【发布时间】:2015-01-29 11:09:09
【问题描述】:
我正在从嵌套函数的外部范围更新变量,
由于这是在初始化函数期间发生的,因此外部范围不是最外部(窗口)范围;
var init = function() {
var x = 'old stuff' ;
function butClick() {
x = 'new stuff' ;
}
console.log(x); // new stuff
document.querySelector("btn").addEventListener("click", butClick, false);
}
window.addEventListener( 'DOMContentLoaded', init, false);
为了将其保存在 init-function 范围内,我省略了 var 关键字,并且正如预期的那样,变量的新值会冒泡并更新;
但是console.log('x' in window )的结果是假的,
冒泡不是应该到达窗口范围吗?
【问题讨论】:
-
这里没有事件,
event-bubbling标签无关。 -
你说得对,我更新了代码示例
-
我已更新答案以解决编辑问题。它仍然不会更改记录的内容,也不会创建全局变量。
标签: javascript scope lexical-scope