【发布时间】:2010-03-08 13:36:20
【问题描述】:
我想问你把所有东西都包起来的原因是什么
(function() {
document.write("Hello World!");
})();
功能?
【问题讨论】:
标签: javascript function initialization
我想问你把所有东西都包起来的原因是什么
(function() {
document.write("Hello World!");
})();
功能?
【问题讨论】:
标签: javascript function initialization
自执行匿名函数的主要目的是将所有内容包装在私有命名空间中,这意味着声明的任何变量都不会污染全局命名空间,基本上就像一个沙盒。
var test = 1;
test 会污染全局命名空间,window.test 会被设置。
(function() {
var test = 1; alert( test );
})();
window.test 未定义,因为它在我们的私有沙箱中。
【讨论】:
“保护”全局命名空间免受污染。
(function() {
var something = "a thing";
// ...
if (something != "a thing") alert("help!");
// ...
function utility(a, b) {
// ...
};
// ...
})();
现在,这些临时变量和函数都在外部一次性函数中受到保护。里面的代码可以使用它们,但全局命名空间保持干净,没有脏的、不需要的变量。
全局命名空间是一种宝贵的资源。我们都应该意识到它对我们自己,尤其是对我们的孩子的重要性。
【讨论】: