显式强制类型转换
字符串和数字之间的显式转换
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() 中的条件判断表达式
- ? : 中的条件判断表达式
- 逻辑运算符 || 和 && 左边的操作数
在以上情况中,非布尔值会被隐式强制类型转换为布尔值。