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

相关推荐
敲代码的彭于晏19 小时前
在迁移中学习 React 18:一份来自 React 17 的升级问题清单
前端·react.js
顾安r19 小时前
12.17 脚本工具 自动化全局跳转
linux·前端·css·golang·html
踢球的打工仔19 小时前
jquery的基本使用(2)
前端·javascript·jquery
DEMO派20 小时前
前端javascript如何实现阅读位置记忆【可运行源码】
前端
苏打水com20 小时前
第十七篇:Day49-51 前端工程化进阶——从“手动”到“自动化”(对标职场“提效降本”需求)
前端·javascript·css·vue.js·html
文心快码BaiduComate20 小时前
Comate强力赋能:「趣绘像素岛」从体验泥潭到高性能可用的蜕变之路
前端·后端·程序员
『 时光荏苒 』20 小时前
使用Vue播放M3U8视频流的方法
前端·javascript·vue.js
Apifox20 小时前
Apifox + AI:接口自动化测试的智能化实践
前端·后端·测试
Tjohn920 小时前
前后端分离项目(Vue-SpringBoot)迁移记录
前端·vue.js·spring boot
CaoLv20 小时前
无需后端!用 React + WebLLM 把大模型装进浏览器,手撸一个“有脾气”的 AI 机器人 🤖
前端