Why do we wrap the function in parenthesis two times in a statement?
本问题已经有最佳答案,请猛点这里访问。
Possible Duplicate:
What is the purpose of a self executing function in javascript?
Explain JavaScript's encapsulated anonymous function syntax
例如:
1 2 3 | (function($) { document.getElementById("foo").innerHTML = 'bar'; })(); |
我知道我们想要创建自己的范围来防止变量冲突,但为什么javascript需要有()()?
那没有
函数语法是
1 | !function(){}() |
这样做是行不通的:
1 | function(){}() |
因为这在语句上下文中,
如果我们有
所以你可以毫不费力地做到这一点:
1 2 3 | var a = function() { return false; }(); |
因为
一个简单的方法来测试你的函数是否会被视为表达式或声明是问自己,我可以在这里使用
例如:
1 2 3 4 5 | var x; //all is fine, so if I said function here, it would be a start of a function declaration (var x) //Gives an error, so replacing var x with a function would be a function expression var myVar = var x; //Gives an error, so replacing var x with a function would be a function expression |
等等
这使它成为一个自我调用的匿名函数。
1 2 3 | (function() { /* function body */ }) /* <-- end of function definition */ (); // <-- invoke that function immediately |
第一个导致函数,与