gpt4 book ai didi

javascript - 带有空括号的 Node.js REPL 语法

转载 作者:行者123 更新时间:2023-12-02 14:09:33 24 4
gpt4 key购买 nike

考虑以下令人兴奋的 JavaScript 代码:

(function(){console.log("wtf?");})()
function(){console.log("wtf?");}()

将此代码放入文件 dumb.js 中并使用 Node 运行,您将得到以下结果:

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

不出所料,这是一个语法错误。然而,在 Node REPL 上,我们看到

$ node
> (function(){console.log("wtf?");})()
wtf?
undefined
> function(){console.log("wtf?");}()
...

此时,除了 .break^C 或类似内容之外,没有其他内容会脱离连续行。

我不明白。

有人可以解释 REPL 正在寻找什么,或者以其他方式解释这种行为吗?

最佳答案

每个node.js documentation :

As a user is typing input into the REPL prompt, pressing the key will send the current line of input to the eval function. In order to support multi-line input, the eval function can return an instance of repl.Recoverable to the provided callback function:

当您通过 Node “文件名”执行整个文件时, Node 能够检查语法错误。这是因为文件内容不会改变。

当 Node repl 中的“{”后面出现语法错误时,它假定您正在输入多行语句。大多数多行语句在关闭之前都不是正确的语法。因此,在语句关闭之前它不会抛出语法错误。此外,您将无法关闭多行语句,因为 Node 在语法错误后无法正确解析您的代码。

您所看到的错误语法正是上述文档中描述的内容。

关于javascript - 带有空括号的 Node.js REPL 语法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39754775/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com