隐式数据类型转换介绍
前面有总结过 JS数据类型转换 Number(), toString(), parseInt()等都是属于强制转换。有时我们遇到当运算符在运算时,如果两边数据类型不统一,CPU无法计算,这是编译器会自动将运算符两边的数据做一个数据类型转换,转换成一样的数据类型在进行运算,这种无需程序员手动转换,而由编译器自动转换的方式就称为隐式转换。
隐式转换规则
- 转为number类型:+ - * / ++ --(算数运算符) > < >= <= == != === !==(比较运算符);
- 转为string类型:+ 不仅是算术运算符,还可以做为字符串连接符把数据转换成string类型;
- 转为boolean类型: !(逻辑非运算符)
另外需要补充的一点常用的几种运算符各运算符优先级:
- 算术运算符:+ - * / ++ –
- 比较运算符: > < >= <= == != === !==
- 逻辑运算符:&& || !
- 赋值运算符:= += -= *= /=
- 算术运算符 > 比较运算符 > 逻辑运算符 > 赋值运算符
字符串连接符与算术隐式转换规则混淆
console.log(1 + true); //2
console.log(1 + "true"); //"1true"
console.log(1 + undefined); //NaN
console.log(1 + null); //1
+两边有一边是字符串,那这个+就是字符串连接符,它会把其他数据类型调用String()方法转成字符串然后拼接;
+做为算术运算符会把其他数据类型调用Number()转成数字然后做加法运算;
布尔值true会被转换数字 1, undefined会被转换为 NaN, null会转换为数字 0
比较运算符会把其他数据类型转换number数据类型后再比较
console.log("2" >