我在谷歌上见过很多:
(function(){/*code*/})为什么他们把自己的功能包含在这篇文章里呢?这是以下两种方法的区别:
function(){/*code*/}编辑
好的,问题应该是:
为什么他们把他们的代码包含在下面:
(function(){/*code*/})();而是将代码直接写入js流中?
有什么好处,不同的行为吗?
发布于 2011-04-01 20:28:13
您看到的是一个自动执行的函数:
var x = (function(bar){
return bar;
})('foo')
alert(x);发布于 2011-04-01 20:30:13
我通常使用直接函数来控制变量范围,以免污染全局名称空间。这是一个非常有用的模式。
(function (window, $, undefined) {
// This pattern gives you the following benefits:
// * all variables defined in here are private
// * can safely minify global variables: window, jQuery & undefined
// * ensures that window, $, undefined mean what you expect
// * global variables are localized so lookups are faster
}(this, jQuery));因此,即使有人执行window = ‘Bob’或快捷方式$不等于jQuery,而是原型库,这个即时函数中的代码仍将正确工作。虽然你可能会想“我从来没有把undefined设置成别的东西”,但请记住,你不是唯一一个把代码放入页面的人;你负担不起DoubleClick写得不好的广告脚本,尤其是当它很容易被阻止的时候。
JavaScript的全球范围就像一个公共厕所。你不能总是回避它,但是尽量限制你与表面的接触。
发布于 2011-04-01 20:27:55
通常这样做是为了迫使解析器将其视为函数表达式,而不是声明。
https://stackoverflow.com/questions/5518439
复制相似问题