在浏览器控制台运行JS基础循环返回undefined,在线编辑器却正常?
关于Chrome控制台显示undefined的原因
- 你的
for(let i = 0; i < 5; i++){console.log(i);}代码逻辑完全正常,在Chrome控制台里会正常输出0、1、2、3、4。 - 控制台最后显示的
undefined,是因为控制台会自动输出当前执行代码块的返回值。for循环属于语句而非表达式,本身没有返回值,所以控制台默认显示undefined。 - 在线编译器通常只展示你主动用
console.log()输出的内容,不会额外显示代码的返回值,所以你看不到这个undefined,并不是代码运行有差异。
关联理解forEach循环
- 对比普通for循环,
forEach是数组的专属遍历方法,核心特点:- 同样没有返回值,调用
forEach后默认返回undefined,哪怕在回调函数里写return也不会改变这个结果 - 回调函数会自动接收当前元素、元素索引、原数组三个参数,专门用于数组遍历场景
- 同样没有返回值,调用
- 用forEach实现类似的输出示例:
在Chrome控制台运行这段代码,会先输出0-4,最后同样显示[0,1,2,3,4].forEach(i => console.log(i));undefined,和你之前的for循环表现一致。 - 如果需要从遍历操作中得到返回值(比如生成新数组),应该使用
map这类有返回值的方法,而非forEach。
内容的提问来源于stack exchange,提问作者REDX12 AE
相关产品推荐
相关产品推荐

