这个构造在javascript中做什么

what does this construct do in javascript

本文关键字:什么 javascript      更新时间:2023-09-26

我真的试图理解以下构造在JS中的含义,但我无法理解:

  • 它是如何工作的
  • 为什么&在什么情况下应该使用这种构造

有人能告诉我吗?非常感谢。

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

// Or in jQuery plugins i saw it very often
(function( $ ){
    ...
})( jQuery );
(function () {
    ...
}());

定义一个函数。立即呼叫。不储存在任何地方。

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

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

完全一样,只是它有一个论点。使用时,可以使用毫无帮助的非描述性变量$,而不会与所有其他库发生名称空间冲突,这些库认为$是一个好的变量名称。

这被称为闭包,它的要点是封装内部代码,以免将其与全局范围混合。

阅读此了解更多详细信息

的第二部分

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

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

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

这些是闭包。关于这种风格的JavaScript编程有很多信息,但其要点是它是一个立即执行的函数。如果你仔细观察语法,这是完全合理的-

CCD_ 3导致执行发生。

//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));