繁体   English   中英

这个构造在 javascript 中做了什么

[英]what does this construct do in javascript

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

  • 这个怎么运作
  • 为什么&在什么情况下应该使用这个结构?

请问有人可以告诉我吗? 谢谢!

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


// Or in jQuery plugins i saw it very often

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

定义一个 function。 立即调用它。 不会将其存储在任何地方。

通常用来限制scope里面的变量。

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

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

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

阅读本文了解更多详情

第二部分

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

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

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

这些是闭包。 有大量关于这种 JavaScript 编程风格的信息,但它的要点是它立即执行 function。 如果您仔细查看语法,这很有意义 -

( )导致执行执行。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM