在浏览器控制台中,
undefined
会时不时地,在我不想看到的地方出现。如果你遇到相同的问题,在这篇博客中你会得到答案。
先来看代码块
javascript
function test(){
}
test()
//undefined
再看下一个代码块
javascript
function test(){
return 1;
}
test()
//1
再来看一个代码块
javascript
console.log("hi")
//hi
//undefined
如你所见,undefined
出现的很莫名其妙。
为什么会这样呢?
相信你也注意到了,我连续三次的 代码块
,这就是关键了,控制台中 JavaScript 期望在每一个 代码块
的最后一行代码 得到一个返回值 ,并且打印出来,如果没有,则默认为 undefined
在以下引用中你会更加详细的解释。
Why does console.log() return 'undefined'?
Harsh Mohite
harshm09.hashnode.dev
Summary:
- 浏览器控制台使用 REPL 环境
- REPL,即 Read - Evaluate - Print - Loop
- 你在控制台输入的所有代码行,首先会进入
READ
阶段,然后进入EVALUATE
阶段,再然后执行LOOP
阶段,控制台准备好了从用户那里获取更多的输入。
ps:所以 console.log() 总会在最后打印一行 undefined
,因为它没有返回值。