Javascript中的倒圆括号

Bry*_*yce 33 javascript node.js

什么是Javascript,让我在这样的函数调用中使用反转/反向括号?我在CLI上运行Node控制台; 特别是节点版本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?
Run Code Online (Sandbox Code Playgroud)

附录:这似乎不适用于Chrome 33.0.1750.152,Safari 7.0.2或Firefox 27.01.这实际上是某种ECMAScript解释的"特征",还是Node的特殊性?如果Node正在使用V8,那么它是否应该与Chrome结果匹配?

小智 23

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

  • 猜测这就是这里的一行:`evalCmd ='('+ evalCmd +')\n';`https://github.com/joyent/node/blob/master/lib/repl.js#L268 (7认同)
  • 好了,现在谁将查看所有node.js源代码来验证? (2认同)