Skip to content

其他值到数字类型的转换规则


其他值到数字值的转换规则?

  • Undefined 类型的值转换为 NaN
  • Null 类型的值转换为 0
  • Boolean 类型的值,true 转换为 1false 转换为 0
  • String 类型的值转换如同使用 Number() 函数进行转换,如果包含非数字值则转换为 NaN,空字符串为 0
  • Symbol 类型的值不能转换为数字,会报错。
  • 对象(包括数组)会首先被转换为相应的基本类型值,如果返回的是非数字的基本类型值,则再遵循以上规则将其强制转换为数字。

典型示例

js
// Undefined
Number(undefined);    // NaN

// Null
Number(null);         // 0

// Boolean
Number(true);         // 1
Number(false);        // 0

// String
Number('123');        // 123
Number('1.23e2');     // 123
Number('abc');        // NaN
Number('');           // 0

// Symbol
// Number(Symbol('a')); // 报错:Cannot convert a Symbol value to a number

// 对象
Number({});           // NaN
Number([]);           // 0
Number([1,2,3]);      // NaN
Number(['123']);      // 123

// 自定义 valueOf
const obj = { valueOf() { return '42'; } };
Number(obj);          // 42

Released under the MIT License.