类型转换
大多数情况下,运算符和函数会自动地将变量的值转换成正确的类型,但有些时候需要显式地将值转换成需要的类型
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 类型转换规则:
值 | 变成…… |
---|---|
undefined | NaN |
null | 0 |
true 和 false | 1 和 0 |
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
、空字符串、null
、undefined
和NaN
)将变为false
- 其他值变成
true
console.log(Boolean(0)); // false
console.log(Boolean('0')); // true
console.log(Boolean(' ')); // 空格,也是 true(任何非空字符串都是 true)