undefined
而不是null
?这是规范的完全任意选择,还是在这种特定选择中可以理解更大的ECMAScript行为上下文?function a() {}
a();
// undefined
null
和undefined
有什么区别?undefined
作为默认返回值更合适是基于规范的原因还是任意选择?
undefined
而不是null
?这是规范的完全任意选择,还是在这种特定选择中可以理解更大的ECMAScript行为上下文?function a() {}
a();
// undefined
null
和undefined
有什么区别?undefined
作为默认返回值更合适是基于规范的原因还是任意选择?
这是规范的一部分。如果没有从给定函数返回明确的返回值,则返回值将始终为undefined。
当在函数中调用return语句时,该函数的执行会停止。如果指定了一个值,则将该值返回给函数的调用者。如果省略了表达式,则返回undefined。
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/return
null
而不是undefined
? - Quentin回答你的问题需要几个关键陈述:
JavaScript没有void类型,因此每个函数都必须返回一个值。默认值为undefined,除了构造函数,在构造函数中,默认返回值为this。
undefined和null是两种不同的类型:undefined是一个类型本身(undefined),而null是已定义的。
因此,如果您没有返回任何内容,则必须是没有任何东西,即undefined。
null
不是一个对象,**null
是用于对象的**。 - Gopikrishna Snull
是 Null 类型。 - Felix Klingundefined
。这是该语言的默认行为。[[Call]]
内部方法规范中的最后一步:
请注意,在JavaScript中,9.2.1 [[Call]] ( thisArgument, argumentsList)
使用thisArgument和argumentsList参数调用ECMAScript函数对象F的[[Call]]内部方法,其中argumentsList是一个ECMAScript语言值列表。执行以下步骤:
…
11. 返回NormalCompletion(undefined)。
null
和undefined
是两个不同的值。同样,根据规范:
当变量没有被赋值时使用的原始值
表示任何对象值的故意缺失的原始值
Brendan Eich,JavaScript的创造者,回答了我的推文。
@BrendanEich 为什么JavaScript函数默认返回`undefined`而不是`null`?这只是一项规范还是有原因的呢?
-- Henri Cavalcante on Twitter
@henricavalcante null表示没有对象,undefined表示没有值,是更广泛的类型。你是在问为什么JS中同时存在null和undefined吗?
null
是一个定义的值,任何变量都有两种状态,已定义和未定义。
var a; // declared but undefined, has nothing in it; does not mean its null
var b = null; // declared and defined as null;
return;
就像在任何其他语言中一样,用于标记函数的结束。因此,它返回了空值,如果您尝试记录它,它将给出undefined
。
undefined
值的情况下期待出现null
? - Quentin