What does a block of code in parentheses mean in JavaScript/jQuery?
Possible Duplicate:
What does (function($) {})(jQuery); mean?
我见过很多jquery代码使用以下语法,但我不太理解它的含义。它出现在这个答案和这个关于代码组织的问题的答案中。这两个都是关于名称间距的,所以我猜这就是它的成就。
1 2 3 4 5 6 7 | var foo = (function () { var someVar; function someFunc() { return true; } })(); |
这是用于名称间距吗?它是如何工作的?有时会有一个名称(名称空间?)在最后一组括号中,有时不是。这两者有什么区别?
这是一
本案例中,外
它可以用于创建一个新变量的范围,因为一个函数是唯一的方式来完成,在JavaScript。(JavaScript没有块的范围。)
因此,
这是一
让我们说你的价值传递到invocation A和它的
1 2 3 4 5 6 7 8 9 10 11 12 13 | var foo = (function ( str ) { var someVar = str; /* function someFunc() { return true; } */ return function() { alert( someVar ); }; })( 'somevalue' ); foo(); // alerts 'somevalue' |
你可以看到,现在由函数参考
让我们说你改变了它的功能是返回到
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | var foo = (function ( str ) { var someVar = str; /* function someFunc() { return true; } */ return function( n ) { if( n ) { someVar = n; } else { alert( someVar ); } }; })( 'somevalue' ); foo(); // alerts 'somevalue' foo( 'newvalue' ); // give it a new value foo(); // alerts 'newvalue' |
现在你可以看到,它是真的,
环绕在周围的括号在匿名函数,为了使它变的可以直接通过增加后的参数信息。
1 2 3 | (function(param) { // do stuff })(param); |
最后一位不是一个命名空间,只是一个参数。你有可能在AS:jQuery的湖泊……
1 2 3 | (function($) { $('.something').addClass('.other'); })(jQuery); |
我期待通过jQuery对象中的一个功能,使