所以在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
符合这一点。