数字(未定义) js 是 NaN



所以在JS中,当用作数字函数的参数时,几乎所有的假值都返回0,所以Number(false(,Number(null(,Number(''(,Number([](都返回0。

我的问题是为什么数字(未定义(返回 NaN?

因为 ECMA 规范:

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

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

问题是:为什么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

我希望它对你有帮助,再见。

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

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

Number符合这一点。

最新更新