JavaScript存在很多的隐式转换,当某些运算符被执行时,如果两边数据类型不一样,CPU就无法计算,系统内部自动将数据类型进行转换,这种无需由程序员完成的转换称为隐式转换
+号作为连接符时,将数据转成字符串
例如 通过 +'' 将数字10转为字符串'10'
let num=10
console.log(typeof(10+'')); //string
注意,当+号作为正号解析可以转成数据类型
例如
let str ='10'
let num=5
console.log(typeof(+str));//number
console.log(+str + num);//15
- * / 等会把数据转成数字类型
例如
let str = '1234'
let num =234
let result =str - num
console.log(result); //1000
console.log(typeof(result));//number
==号 ,也可以进行隐式转换
console.log('11' == 11);//true 字符串先转成数字再进行比较
所以比较两个数据是否完全相等时,强烈推荐使用 ===
console.log('11' === 11);//false
1.对象和布尔值比较时,先将对象转换为字符串,然后转成数字,布尔值直接转成数字
例如
[] == true //false
[]转成“”,再转成数字0 ,true转成数字1,所以结果为false
2.对象和字符串比较时,对象转成字符串再进行比较
[1,2,3] =='1,2,3'//true
3.对象和数字比较,对象先转成字符串,再转成数字然后进行比较
[1]==1 //true
if()语句中的隐式转换
像空字符串'', undefined,null ,0等自动转成false
例如
let name
if(!name){
console.log('666');
}