我真的很想了解,以下结构在JS中有什么意义,但我无法弄清楚:
(function () {
...
}());
// Or in jQuery plugins i saw it very often
(function( $ ){
...
})( jQuery );
答案 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));