其他值到数字类型的转换规则
其他值到数字值的转换规则?
Undefined类型的值转换为NaN。Null类型的值转换为0。Boolean类型的值,true转换为1,false转换为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