现代 JavaScript 从头再来(二):类型转换

2 阅读1分钟

类型转换

大多数情况下,运算符和函数会自动地将变量的值转换成正确的类型,但有些时候需要显式地将值转换成需要的类型

string 类型转换

alert 会自动将任何值都转换为字符串以进行显示

使用 String(value) 显式转换

let value = true;
console.log(typeof value); // boolean

value = String(value);
console.log(typeof value); // string

number 类型转换

在算术函数和表达式中,会自动进行 number 类型转换:

alert('6' / '2'); // 3, string 类型的值被自动转换成 number 类型后进行计算

使用 Number(value) 显式转换:

let value = '123';
console.log(typeof value); // string

value = Number(value);
console.log(typeof value); // number

number 类型转换规则:

变成……
undefinedNaN
null0
true 和 false10
string去掉首尾空白字符(空格、换行符 \n、制表符 \t 等)后的纯数字字符串中含有的数字。如果剩余字符串为空,则转换结果为 0。否则,将会从剩余字符串中“读取”数字。当类型转换出现 error 时返回 NaN
console.log(Number('  123 \n \t  ')); // 123
console.log(Number('123a')); // NaN(从字符串“读取”数字,读到 "a" 时出现错误)
console.log(Number(true)); // 1
console.log(Number(false)); // 0

boolean 类型转换

发生在逻辑运算中,也可以通过 Boolean(value) 显式地进行转换

boolean 类型转换规则:

  • 直观上为“空”的值(如 0、空字符串、nullundefinedNaN)将变为 false
  • 其他值变成 true
console.log(Boolean(0)); // false
console.log(Boolean('0')); // true
console.log(Boolean(' ')); // 空格,也是 true(任何非空字符串都是 true)