为什么可以用经node.js测试的JavaScript调用此函数:
~$ node
> function hi() { console.log("Hello, World!"); };
undefined
> hi
[Function: hi]
> hi()
Hello, World!
undefined
> hi)( // WTF?
Hello, World!
undefined
>
为什么最后一次呼叫“” hi)(
有效?是node.js中的错误,V8引擎中的错误,正式未定义的行为还是对所有解释程序实际上有效的JavaScript?
4个月前针对此问题提出了一个错误https://github.com/joyent/node/issues/5698
问题在于,REPL将语句括以括号。所以
变成
实际的解释可以在这里https://github.com/joyent/node/issues/5698#issuecomment-19487718找到。