为什么函数默认返回undefined而不是null?

Hen*_*nte 8 javascript function

为什么JavaScript函数undefined默认返回而不是返回null规范中这是一个完全任意的选择,还是存在一个更大的ECMAScript行为上下文,可以在其中理解这个特定选择?

function a() {}
a();
// undefined
Run Code Online (Sandbox Code Playgroud)

null和之间有什么区别undefined?是否存在基于规范的原因,为什么它undefined更适合用作默认返回值,或者是一个任意选择?

aps*_*ers 7

规格说明nullundefined

未定义值

未给变量赋值时使用的原始值

空值

表示有意缺少任何对象值的原始值

undefined表示分配值失败。这是完全没有值的情况。null表示对象上下文中非值的肯定断言。null预期在需要对象但当前值为无对象时使用。

给定这两个定义,显然这undefined是正确的选择,因为

  1. 函数可以返回对象以外的值,并且
  2. 未能指定返回值会巧妙地映射到无法分配值