【发布时间】:2014-01-16 16:36:10
【问题描述】:
我目前正在做一个相对简单的项目并发现了一些东西:
var test = (function() {
var internal = 5;
return {
init: function() {
$(document).on('click', function() {
alert(internal);
});
}
};
}());
test.init();
我认为闭包和 javascript 作用域(据我理解)意味着函数只能访问它自己的变量,以及它上面的 1 级。那么为什么会这样呢?当我单击文档时,我收到“5”的警报,我预计会得到未定义。
这是一个显示我在做什么的 JSFiddle:
【问题讨论】:
-
我相信变量可以在页面中的任何位置访问..即他们的范围是整个页面
-
查看net.tutsplus.com/tutorials/javascript-ajax/…了解更多关于闭包如何工作的细节
-
@AlienArrays:
internal未在test函数中定义;test最终引用了匿名函数返回的对象。
标签: javascript scope closures