Javascript中的倒括号

Javascript中的倒括号,javascript,node.js,Javascript,Node.js,Javascript允许我在这样的函数调用中使用倒括号/倒括号,这是因为什么?我在CLI上的节点控制台中运行;特别是节点版本0.10.25 function a(){ return 42 } a() // -> 42 a)( // -> 42. WTF? function b(t){ return t } b(4) // -> 4 b)4( // No function evaluation; presumably dangling parentheses b)(4 //

Javascript允许我在这样的函数调用中使用倒括号/倒括号,这是因为什么?我在CLI上的节点控制台中运行;特别是节点版本0.10.25

function a(){ return 42 }
a() // -> 42
a)( // -> 42.  WTF?

function b(t){ return t }
b(4) // -> 4
b)4( // No function evaluation; presumably dangling parentheses
b)(4 // -> 4.  WTF?

补充:这在Chrome 33.0.1750.152、Safari 7.0.2或Firefox 27.01中似乎不起作用。这实际上是ECMAScript解释的某种“特性”还是节点特性?如果Node使用的是V8,它是否应该与Chrome结果相匹配?

控制台可能会将所有内容封装在eval语句中:实际是什么
评估可能是评估(a)()。在这种情况下,Chrome也会返回42。

意外标记)
在Chrome中<代码>应为“;”。这在Google Chrome上肯定不起作用
我在CLI上的节点控制台上运行。
可能这是节点的一种特定行为,因为它被解释为
(b)(4)
?我打赌节点的代码是在一对
()
中计算的,所以它变成了
(b)(4)
甚至只是一组括号:
a)(
=>
(a)()
好了,现在谁来查看所有node.js源代码以验证?+1这绝对是事实。如果您阅读文档中的此处,您将看到每一行都使用eval:
eval-函数进行计算,该函数将用于计算每一行。eval()默认为异步包装器
猜测这是这里的一行:
evalCmd='('+evalCmd+')\n';
根据@cookiemonster发现的内容,它的评估为
eval('(a)('))