其他值到数字类型的转换规则
其他值到数字值的转换规则?
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