Node.js的REPL语法考虑下面的激动人心的JavaScript代码:空括号
(function(){console.log("wtf?");})()
function(){console.log("wtf?");}()
将此代码放在一个文件dumb.js
与节点运行,你会得到以下结果:
private/tmp/junk/dumb.js:2
function(){console.log("wtf?");}()
^
SyntaxError: Unexpected token (
at Object.exports.runInThisContext (vm.js:76:16)
at Module._compile (module.js:528:28)
at Object.Module._extensions..js (module.js:565:10)
at Module.load (module.js:473:32)
at tryModuleLoad (module.js:432:12)
at Function.Module._load (module.js:424:3)
at Module.runMain (module.js:590:10)
at run (bootstrap_node.js:394:7)
at startup (bootstrap_node.js:149:9)
at bootstrap_node.js:509:3
不出意外,这是一个语法错误。然而,在节点REPL,我们看到
$ node
> (function(){console.log("wtf?");})()
wtf?
undefined
> function(){console.log("wtf?");}()
...
在这一点上,不过.break
,^C
等跳出连续行。
我不明白。
有人可以解释一下REPL正在寻找什么,或者解释这种行为吗?
高丽,那*确实*迷惑它,不是吗? –
虽然这里真正的问题是什么? –
我的现实世界问题是试图向javascript学生解释到底发生了什么。 –