JavaScript 词条目录
前端Wiki/JavaScript/基础/变量与数据类型

类型转换

类型转换分显式转换(自己调用函数,推荐)和隐式转换(JS 自动转,容易出 bug)。显式转换的常用函数:Number()、String()、Boolean()、parseInt()、parseFloat()。

转布尔值时只有 6 个「假值」会变成 false:false、0、''(空字符串)、null、undefined、NaN,其余全是真值——注意 '0' 和 [] 都是真值。

最危险的隐式转换发生在 == 上:它比较前会偷偷转类型,导致 1 == '1' 为 true。所以永远用 === 严格相等。另外 + 号遇到字符串会转成拼接,- 号则会尝试转数字做减法,规则不一致要特别小心。

本节要点记住 6 个假值;+ 遇字符串变拼接;永远用 === 代替 ==;表单拿到的值都是字符串,运算前要 Number() 转换。
JavaScript
// 显式转换:用函数明确地转
console.log(Number('123'));     // 123
console.log(Number('12px'));    // NaN:转不动
console.log(parseInt('12px'));  // 12:从头解析数字
console.log(String(123));       // '123'
console.log(Boolean(0));        // false

// 6 个假值:false 0 '' null undefined NaN
console.log(Boolean(''));       // false
console.log(Boolean('0'));      // true(非空字符串都是真值)
console.log(Boolean([]));       // true(空数组也是真值)

// 隐式转换:+ 遇到字符串就拼接
console.log(1 + '2');           // '12'
console.log('5' - 2);           // 3(减号会转数字)
console.log('5' * '2');         // 10

// == 会先转类型再比较,永远别用
console.log(1 == '1');          // true(危险!)
console.log(1 === '1');         // false(推荐)
console.log(NaN === NaN);       // false(NaN 不等于任何值)