这个构造在javascript中做了什么

时间:2011-06-08 13:16:47

标签: javascript jquery

我真的很想了解,以下结构在JS中有什么意义,但我无法弄清楚:

  • 如何运作
  • 为什么&应该使用这种结构?
有人可以告诉我吗?谢谢!

(function () {
    ...
}());


// Or in jQuery plugins i saw it very often

(function( $ ){
    ...
})( jQuery );

4 个答案:

答案 0 :(得分:7)

(function () {
    ...
}());

定义一个函数。立即拨打电话。不存储在任何地方。

通常用于限制其中变量的范围。

(function( $ ){
    ...
})( jQuery );

完全一样,除了它有一个参数。使用时,可以使用无用的非描述性变量$,而不会与认为$是变量的良好名称的所有其他库发生命名空间冲突。

答案 1 :(得分:1)

这称为Closure,它的主要内容是封装内部代码,以免将其与全局范围混合。

Read this了解更多详情

答案 2 :(得分:0)

第二部分

(function( $ ){
    ...
})( jQuery );

用于使您的代码能够使用$作为jQuery对象的引用,而不会与其他javascript库(如Prototype)冲突。

请参阅jQuery文档: http://docs.jquery.com/Using_jQuery_with_Other_Libraries#Referencing_Magic_-_Shortcuts_for_jQuery

答案 3 :(得分:0)

这些是关闭。关于这种JavaScript编程风格的信息很多,但它的要点是它是一个立即执行的函数。如果仔细观察语法,这就非常有意义了 -

( )会导致执行。

//Function immediately executes.
(function() {

});

//Wait we can do better, let's pass in an argument
(function($) {
    //$ is now a local variable inside this tightly scoped function
    //So that I can describe this as a closure I've added members to this function

    var foo = 0,
        bar = function() {
           return foo;
        };

    return {
       foo: bar
    };
}(jQuery));