为什么可以用经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?
1
在Ubuntu 13.04上的nodejs v0.6.19中可重现
—
mvp
在jsfiddle.net上进行的快速测试将显示它是无效的JavaScript。
—
克里斯托夫·
似乎是Node REPL错误,将这两行放在a内
—
leesei 2013年
.js
将导致语法错误
顺便说一句,应归功于这,这是@irml在irc(FreeNode #nodejs)上提出的
—
hyde
Perl也有类似的原因,其原因大致相同:
—
Adrian Pronk
perl -ne '$x += $_; }{ print $x'
。请参阅Perl的隐藏功能