数字(未定义)js是NaN

时间:2017-03-21 08:49:14

标签: javascript

因此在JS中,几乎所有falsey值在用作Number函数的参数时返回0,因此Number(false),Number(null),Number(''),Number([])都返回0。

我的问题是为什么Number(undefined)会返回NaN?

3 个答案:

答案 0 :(得分:5)

因为ECMA规范:

http://www.ecma-international.org/ecma-262/5.1/#sec-9.3

我知道,这不是一个非常令人满意的答案

答案 1 :(得分:1)

问题是:为什么null值应该返回0? 我认为这种行为的原因应该在我使用数字和其他值进行操作时会发生什么?

让我们试试:

//Normal operation
console.log(10 + 2);
//Number(false)
console.log(10 + false);
//Number(null)
console.log(10 + null);
//Number('')
console.log(10 + '');
//Number([])
console.log(10 + []);
//Number(undefined)
console.log(10 + undefined);

//All right operators returns 0 but undefined takes down the operation

我希望它可以帮助你,再见。

答案 2 :(得分:0)

Number函数的工作是将其参数转换为数字。

但NaN(不是数字)是一种好奇心,因为它应该通过任何数值函数传播。

Number符合此要求。