【发布时间】:2014-09-20 05:55:14
【问题描述】:
我偶然发现了一种非常优雅的方式来为页面构建 JS 代码,但我不确定它为什么会这样工作。有人可以向我解释这是如何工作的吗? (例如,为什么那里有那个 return 语句)。
还有一个名字来描述这样的模式吗?
var PageCode = (function () {
return {
ready: function () {
console.log('document.ready');
},
load: function() {
console.log('document.load');
}
};
}());
$(document).ready(PageCode.ready);
$(window).load(PageCode.load);
【问题讨论】:
-
它被称为
closure。谷歌搜索javascript closure会给你很多结果。 -
这实际上是立即调用函数表达式 (IIFE) 的一个特别糟糕的示例,因为它没有局部变量。您可以轻松地使用返回的对象字面量来代替整个 IIFE,而无需任何可观察到的行为变化。
标签: javascript