JS是动态类型语言,我们在定义一个变量其实并没有指定这个变量到底属于那种类型,只有到程序执行阶段才确定当前数据类型。
而各种运算符对数据类型是有要求的,所以就会触发类型转换机制(no matter 人为 or 隐式触发)
显示转换:
通过JS内置的函数明确转换的数据类型
-
Number
-
parseInt(string, ?进制) 比Number宽松,一位一位解析遇到不能解析的停止
-
String
-
Boolean
隐式转换:
运算操作符两边数据类型不一致(比较运算符、算术运算符)
-
转为Boolean (需要布尔值的地方,借助的
Boolean()
函数)- falsely变量:
undefined
、null
、false
、+/-0
、NAN
、""
- falsely变量:
-
转为String (复合类型—>原始类型---->字符串)
- 常发生在,如
"5" + xxx
的加法运算中
- 常发生在,如
-
转为Number
- 除了加法运算符号,其他都有可能
other
===
在不进行类型转换情况下,双方的类型与值都相等