显式强制类型转换
字符串和数字之间的显式转换
1  | let a = 42;  | 
除了 String() 和 Number() 以外,还有其他方法:
1  | let a = 42;  | 
日期显式转换为数字
1  | let d = new Date();  | 
我们下面的方法获取当前的时间戳:
1  | let timestamp1 = +new Date();  | 
奇特的 ~ 运算符
~ 可以和 indexOf() 一起将结果强制类型转换:如果 indexOf() 返回 -1,~ 将其转换为假值0,其他情况一律转换为真值。
1  | let a = "Hello World";  | 
显式解析数字字符串
1  | let a = "42";  | 
显式转换为布尔值
虽然Boolean是显式的,但并不常用。
1  | let a = "0";  | 
常用的是 !
1  | let a = "0";  | 
隐式强制类型转换
字符串和数字之间的隐式转换
1  | let a = "42";  | 
1  | let a = [1,2];  | 
简单来说,如果 + 的其中一个操作数是字符串(或者经过一系列操作得到字符串),则执行字符串的拼接,否则执行数字加法。
1  | let a = "3.14";  | 
a - 0 会将 a 强制类型转换为数字。执行减法运算,a 和 b 都需要转换为数字。
隐式转换为布尔值
- if() 语句中的条件判断表达式
 - for() 语句中的条件判断表达式(第二个)
 - while() 和 do.while() 中的条件判断表达式
 - ? : 中的条件判断表达式
 - 逻辑运算符 || 和 && 左边的操作数
 
在以上情况中,非布尔值会被隐式强制类型转换为布尔值。