【退役之重学前端】关于在控制台得到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,因为它没有返回值。

相关推荐
six+seven2 分钟前
Node.js内置模块fs
前端·node.js
少莫千华3 分钟前
【HTML】CSS绘制奥运五环
前端·css·html
沛沛老爹3 分钟前
Web开发者转型AI安全核心:Agent Skills沙盒环境与威胁缓解实战
java·前端·人工智能·安全·rag·web转型升级
仰泳之鹅16 分钟前
【杂谈】C语言中的链接属性、声明周期以及static关键字
java·c语言·前端
2501_9403152619 分钟前
【无标题】(leetcode933)最近的请求次数
java·前端·javascript
每天吃饭的羊31 分钟前
LeetCode 第一题
前端
入门级前端开发32 分钟前
vue集成xlsl实现前端表格导入导出
前端·javascript·vue.js
小二·37 分钟前
Python Web 开发进阶实战:联邦学习平台 —— 在 Flask + Vue 中构建隐私保护的分布式 AI 训练系统
前端·python·flask
一人の梅雨43 分钟前
中国制造网商品详情接口进阶实战:跨境场景下的差异化适配与问题攻坚
java·前端·javascript
无知的小菜鸡1 小时前
React:使用高阶组件实现vue中的路由守卫功能
前端·vue.js·react.js