使用空字符串、null 或 undefined 调用的号码

Number called using empty string, null, or undefined

以下调用returns值为0:

var n1 = Number()         // n1 === 0 is true
var n2 = Number("")       // n2 === 0 is true
var n3 = Number(null)     // n3 === 0 is true 

我在上面的 Google Chrome 版本 64.0.3282.119

中尝试过

但是,这种行为是否定义明确?我不确定它在其他浏览器中的行为是否相同。

当没有提供参数时,Number() 将始终 return 0,如果参数是非法的,那么 Number() 将 return NaN

来自ECMAScript specification

对于string-to-number转换,在下一节中添加了信息:https://www.ecma-international.org/ecma-262/8.0/index.html#sec-tonumber-applied-to-the-string-type

是的,这是所有浏览器的预期行为。

传递给 Number 的构造函数的任何不可执行值都将 return 0。

var num1 = Number();
var num2 = Number("");
var num3 = Number(false);
var num4 = Number(null);
// here num1, num2, num3 and num4 will be 0 as undefined, empty string, false and null are non-executable values.

如果您将可执行 non-number 值传递给 Number 的构造函数,它将 return NaN

var num5 = Number("abc");
var num6 = Number({});
var num7 = Number([]);
// num5, num6 and num7 will be NaN as non-empty string, any object and any array are executable but Not a number values.