javascript - 在()之间封装js函数?

标签 javascript

<分区>

Possible Duplicate:
Difference between (function(){})(); and function(){}();

google了很多:

(function(){/*code*/})

为什么他们将函数包含在括号内? 两者之间的区别是:

function(){/*code*/}

?

编辑

好的,问题应该是这样的:

为什么他们将他们的代码包含在其中:

(function(){/*code*/})();

而是直接把代码写进js流?
有什么好处,不同的行为吗?

最佳答案

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

(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 而是 Prototype 库,这个即时函数中的代码仍然可以正常工作。虽然您可能会想“我永远不会将 undefined 设置为其他内容”,但请记住,您不是唯一将代码放入页面的人;您无法承受 DoubleClick 编写糟糕的广告脚本导致网站崩溃的后果,尤其是当它很容易被阻止时。

JavaScript 的全局作用域就像一个公共(public)厕所。你不能总是避免它,但要尽量减少与表面的接触。

关于javascript - 在()之间封装js函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5518439/

相关文章:

javascript - 字符串化数组是一个好习惯吗?

javascript - RaphaelJS 旋转不起作用

javascript - 条件事件监听器

javascript - 信用卡号码掩蔽与 ionic 输入 - Ionic3

javascript - TypeError 无法读取未定义的属性 "length"- angular 4

javascript - 使用在其中附加了 div 的 jQuery 发送表单数据

javascript - Protractor 单击嵌套按钮元素

javascript - 使用 backbone.js 构建监控前端

javascript - 如何通过对元素的子属性设置过滤器来获取元素

javascript - TS7053 : Element implicitly has an 'any' type