为何在浏览器控制台执行语句(如var foo = 'bar')会返回undefined?
为什么在浏览器控制台执行
var foo = 'bar'这类语句会返回undefined? 这个问题的核心得从JavaScript里表达式和语句的区别说起:
- 首先,
foo = 'bar'是一个赋值表达式——表达式的特点是本身会产生一个返回值,这里赋值表达式的返回值就是被赋予的内容'bar'。如果你直接在控制台输入这句,会看到返回的就是'bar'。 - 但
var foo = 'bar'是一个变量声明语句,它的作用是完成变量的声明和初始化,这类语句本身并没有定义返回值。
而浏览器控制台的逻辑是:当你输入一段代码后,它会尝试评估这段代码的“结果”——如果是有返回值的表达式,就输出这个值;如果是没有返回值的语句,就默认输出undefined,因为没有可返回的内容。
你提到函数默认返回undefined,其实和这个逻辑是相通的:函数如果没有显式写return语句,那么函数体里的语句执行完毕后,没有产生可返回的结果,所以默认返回undefined,本质都是“没有返回值时的默认兜底”。
再举个直观的例子对比:
- 输入
let baz = 123(变量声明语句)→ 返回undefined - 输入
baz = 123(赋值表达式)→ 返回123
内容的提问来源于stack exchange,提问作者manjunatha_d
相关产品推荐
相关产品推荐

