what's the function of parantheses in javascript?
本问题已经有最佳答案,请猛点这里访问。
我知道大多数人都使用以下脚本
1 | (function(){})(); |
用于匿名函数调用。 但周围的parantheses的功能是什么?
1 2 | var g = (); // syntax error, why? var g= (function(){}); // correct |
有人可以帮我解释一下吗?
为了说明它,请参阅以下示例。
1 2 3 | var x = 5; // works var y = (5); // works var z = (); // syntax error! |
方法调用
当用作运算符时,它将用于调用函数,可选地使用参数列表:
1 2 | var a = function() { console.log(23); } a() // => 23 |
当人们使用直接调用创建闭包的匿名函数时,您可以看到这一点。就像在你的例子中一样:
1 | (function(){})(); |
虽然我猜大多数人会这样写:
1 | (function(){}()); |
表示该功能已分组,表达式是整体的一部分。这导致了另一个用例:
分组表达式
1 | (1,2,3); |
空
1 2 | a = (1,2,3); console.log(a); // => 3 |
在你的例子中就是这种情况:
1 | var g = (function(){}); |
1 | var g = function() {}; |
同样的效果。
分组没有直接的价值,但是当你考虑为闭包创建匿名函数时,它是非常重要的:
1 2 3 | function() { // your code }(); // => Syntax Error |
但这会奏效:
1 2 3 | (function() { return 12; }()); |
因为表达式被分组。
函数表达式的括号是使它成为一个表达式。
在这种情况下,命名函数的语法太相似,函数表达式在没有括号的情况下工作:
1 2 3 | function(){}(); ^ |______ syntax error, function name expected |
在使用函数表达式的其他情况下,已经知道它必须是一个表达式,例如:
1 | var f = function(){}; |
1 2 | var g = (function(){console.log('hello')}); g(); |