在js中,当运算符在运算时,如果两边数据不统一,CPU就无法计算,这时我们编译器会自动将运算符两边的数据做一个数据类型转换,转成一样的数据类型再计算。
什么时候不会转类型?
- 字符串的+号是连接符,不参与隐式转化
- 当比较的两边都是引用类型。不参与隐式转化。
console.log([]===[]); // false console.log({}==={}); // false
工作中遇到的隐式转总结
- 不调用方法,直接转字符串类型
var num = 1; console.log(num + '')
- 不调用方法,直接转数字类型
var str = '1111' console.log(str * 1)
- 非空判断
var data = ''; if (data) { //if true do something}