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

383 阅读2分钟

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

一、undefined(未定义型)类型转化成数字类型

console.log(Number(undefined));  // 输出结果:NaN

二、null(空类型)类型转化成数字类型

console.log(Number(null));     // 输出结果:0

三、Boolean(布尔型)值类型转换成数字类型

console.log(Number(true));      // 输出结果:1
console.log(Number(false));      // 输出结果:0

四、String(字符串)类型转换成数字类型

console.log(Number('ikun'));     // 输出结果:NaN
console.log(Number('666ya'));     // 输出结果:NaN
console.log(Number('369'));       // 输出结果:369
console.log(Number('你好'));       // 输出结果:NaN
console.log(Number('true'));       // 输出结果:NaN
console.log(Number('false'));      // 输出结果:NaN

五、symbol转换成数字类型(Es6)

// symbol是一种基本数据类型
console.log(Number(Symbol(42)));     // 输出结果:报错

六、复杂数据类型(列如:{},[])转换成数字类型

console.log(Number([1, 2, 3]));  // 输出结果:NaN
console.log(Number([1, 2, 3].join('')));   // 输出结果:123
console.log(Number({ name: 'zs', age: 18 }));   // 输出结果:NaN

let obj = { name: 'zs', age: 18 }

console.log(JSON.stringify(obj).replace('{', '').replace('}', '').replace(',', '').split(':').join(''));        // 输出结果: "name""zs""age"18

console.log(Number(JSON.stringify(obj).replace('{', '').replace('}', '').replace(',', '').split(':').join('')));      // 输出结果:NaN

通过以上复杂数据数据类型转换成数字类型得出结论:

1、复杂数据类型要想转化成数字类型需要先转换成基本数据类型,否则结果为NaN
2、复杂数据类型转换成字符串型,字符串包裹的内容有数字外的字母或文字都返回NaN,其次包裹的如果全是数字,则返回数字类型。

总结:

  1. undefined(未定义型)类型转化成数字类型 为NaN
  2. null(空类型)类型转化成数字类型 为0
  3. Boolean(布尔型)值类型转换成数字类型 true为1 false为0
  4. String(字符串)类型转换成数字类型 结论:字符串包裹的内容有数字外的字母或文字都返回NaN,其次包裹的如果全是数字,则返回数字类型
  5. symbol转换成数字类型 结果:控制台报错