【发布时间】:2018-09-03 08:57:45
【问题描述】:
在 Mac (OS X 10.13.3) 终端中,当我输入节点的 REPL (v8.10.0) 并输入以下各行时,我得到指示的输出:
> let a = 'abc'
undefined
> const b = 'abc'
undefined
> var c = 'abc'
undefined
> d = 'abc'
'abc'
为什么前三个与最后一个之间的输出不同?
我知道,在 ES5 非严格模式下,var x = 1 和 x = 1 会导致不同的变量范围,但我怀疑这不是这里的问题。
我也明白d = 'abc' 不再是 JavaScript 的最佳实践,甚至在 ES5 严格模式下也不允许。但是,我只是想了解行之间的语法差异和/或节点 REPL 如何解释输入。这是否与语句与表达式(或定义或赋值或声明或......)有关?
(我尝试搜索 StackOverflow,但在题为 'node.js displays “undefined” on the console' 或 'node.js REPL “undefined”
' 的问题中没有找到答案。我也无法在 Node.js v8.10.0 Documentation section for REPL 中找到答案。搜索 Google ,比如说node repl "return value"等也没有帮助。)
【问题讨论】:
标签: javascript node.js undefined read-eval-print-loop variable-declaration