【退役之重学前端】关于在控制台得到undefined的事

在浏览器控制台中,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:

  1. 浏览器控制台使用 REPL 环境
  2. REPL,即 Read - Evaluate - Print - Loop
  3. 你在控制台输入的所有代码行,首先会进入READ阶段,然后进入EVALUATE阶段,再然后执行PRINT语句。计算阶段会从最后一段代码获取一个返回值。如果返回值存在,那么返回值将会打印在控制台。否则,打印undefined。此后,进入到LOOP阶段,控制台准备好了从用户那里获取更多的输入。

ps:所以 console.log() 总会在最后打印一行 undefined,因为它没有返回值。

相关推荐
牧艺29 分钟前
SPA 也能像原生 App:View Transitions API 从原理到可上线实战
前端·javascript·css
Dovis(誓平步青云)32 分钟前
现场问题先关闭还是先验收,建筑任务怎样处理依赖
前端·javascript·数据库·mysql·音视频
用户842981424181035 分钟前
压缩 ≠ 加密:前端代码保护的三层实践与踩坑记录
前端·javascript
前端一课1 小时前
别把人生过成一场等待退休的倒计时
前端
CENTER SAYS1 小时前
企业400电话办理全流程详解与材料准备(实操向)
前端·crm
:mnong1 小时前
Web 三维可视化技术对比:ParaView Web vs 本项目 wasm + Three.js
前端·webgl·opengl·opencl·科学可视化
Shirley~~1 小时前
three.js的调试面板工具
前端·3d
怕浪猫1 小时前
12个UI组件库,Star最低的下载最多
前端·javascript·面试
溪语流沙1 小时前
【Web全栈进阶】Vue3起步:组件、模板语法、响应式数据
前端·javascript·vue.js·css3
众链网络2 小时前
Agent 重试的工程解法:幂等、断点续跑与熔断怎么落地
java·前端·数据库·人工智能