0
var VarHere;

(function (VarHere) {
    // Code here    
    var SomeView = Backbone.View.extend({});

    $(function () {
        VarHere.SomeController = new SomeView({
            el: $someContainer
        });
    });
})(VarHere || (VarHere = {}));

这个片段中发生了什么?我已经看到它在一些 BackBone js 实现中使用。

我知道 jQuery 就绪块里面的东西是做什么的,并且基本上设置了 VarHere,但是 (function(VarHere) { 和关闭部分到底是什么?它的意义是什么?

4

1 回答 1

2

它是一个匿名函数VarHere ,如果已定义或为空对象,则自动调用作为参数传递

function(param){...} //this is anonymous function

使用:

(function(param){...})(param) //make this function called  passing param as parameter of this anonymous function

为什么使用(VarHere || (VarHere = {}))

这样,您可以确定您的参数VarHere是在被调用函数中定义的。

通常对于 jquery 插件,你也会看到:

(function(param, undefined){...})(param)

在这里,您要确保未定义的内部函数是您所期望的。您只将一个参数传递给需要两个参数的函数,第二个参数是“未定义”。

这是因为在 javascript 中,undefined不是受保护的关键字:var undefined = "something i don't expect";仍然是可能的。

当然,这个函数创建了一个闭包,里面声明的所有变量在全局范围内都是不可见的。

于 2013-06-05T17:56:53.823 回答