是什么;(function(global,$,_){}(app,jQuery,_));意思?

时间:2013-08-23 00:54:31

标签: javascript jquery backbone.js

在一个JavaScript文件中,脚本被包装成这个,为什么要将代码包装成这个?对此有何提及?为什么定义Basepage=global.Basepage

;(function (global,$,_) {
  var Basepage=global.Basepage = Backbone.View.extend({});
}(app,jQuery,_));

2 个答案:

答案 0 :(得分:1)

通过设置var Basepage,Basepage将成为该函数中的局部变量,并且他们不需要为任何进一步的引用编写global.Basepage。像这样的组织有几个好处,我会尝试列出每个。

  1. 代码的其他部分无法访问函数内的任何变量。如果您声明了var xvar element这样的常用名称,并且不希望它与其他人混淆为全局变量,那么这非常有用。
  2. 在功能内部,' app'被称为“全球性”。设置' global.Basepage = Backbone.etc ...'表示在执行该功能后,appBasePage作为属性。
  3. 一些javascript loader-frameworks依赖于这种风格,能够在所有依赖项(如JQuery)加载之后初始化模块

答案 1 :(得分:1)

这是namespacing的一种方法。通过这种方式,您可以将单个变量添加到全局命名空间中,并可以访问它以访问其他方法和变量。

它正在做的是在读取代码时自动执行该函数,并且当它执行时,app, jQuery, and _作为变量传递给函数,这是参数所采用的。 global = app $ = jQuery _ = _

这为您提供了一种封装功能而不会污染全局命名空间的好方法,并降低了覆盖应用程序中具有相同名称的变量的风险。