首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将js函数封装在()之间?

将js函数封装在()之间?
EN

Stack Overflow用户
提问于 2011-04-01 20:24:29
回答 5查看 3.9K关注 0票数 7

可能重复: (函数(){})()和函数(){}()之间的区别;

我在谷歌上见过很多:

代码语言:javascript
复制
(function(){/*code*/})

为什么他们把自己的功能包含在这篇文章里呢?这是以下两种方法的区别:

代码语言:javascript
复制
function(){/*code*/}

编辑

好的,问题应该是:

为什么他们把他们的代码包含在下面:

代码语言:javascript
复制
(function(){/*code*/})();

而是将代码直接写入js流中?

有什么好处,不同的行为吗?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2011-04-01 20:28:13

您看到的是一个自动执行的函数:

代码语言:javascript
复制
var x = (function(bar){
    return bar;
})('foo')

alert(x);
票数 5
EN

Stack Overflow用户

发布于 2011-04-01 20:30:13

我通常使用直接函数来控制变量范围,以免污染全局名称空间。这是一个非常有用的模式。

代码语言:javascript
复制
(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的全球范围就像一个公共厕所。你不能总是回避它,但是尽量限制你与表面的接触。

票数 15
EN

Stack Overflow用户

发布于 2011-04-01 20:27:55

通常这样做是为了迫使解析器将其视为函数表达式,而不是声明。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5518439

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档