输出中的“未定义”是什么意思?

时间:2019-05-10 22:31:44

标签: javascript node.js

在节点解释器中

> 1+3
4
> var name=12
undefined
> console.log(typeof name)
number
undefined

输出中的undefined是什么意思?

为什么1 + 3不能输出undefined,而其他两个却可以呢?

谢谢。

2 个答案:

答案 0 :(得分:5)

因为1 + 3返回4。变量声明不返回任何内容,console.log也不返回。您看到的值为undefined是返回值。但是,变量分配({var hello; hello = "hello")确实返回分配的值(感谢VLAZ指出这一点)。

答案 1 :(得分:1)

您正在使用节点REPL(moreinfo)

REPL代表Read-Eval-Print-Loop。 顾名思义,它将读取您的输入,对其进行评估(运行)以打印结果并重复。 打印部分将打印您返回的任何代码。所以它正在做的事情是这样的:

console.log(eval({your expression here}))

因此,根据您的情况,我们有:

console.log(1+3) // 4
console.log(var name=12) // undefined because an attribution doesn't return anything
console.log(console.log(typeof name)) // first the inner console.log will print the type of name (number) and then the outer console.log will print undefied (the return of the inner console.log).

希望这样更清楚。