加减乘除隐式类型转换
1.加减乘除能直接转换number的直接转换
否则先转换成string再转换成number(其实就是对象先valueof再tostring再转number)
2.字符串加法变成拼接都转换成字符串
3.null转number为0 undefined转number为NAN
console.log('12'+[])//12
console.log(String([]))//''
console.log(String([])=='')//true
console.log([]=='')//true
console.log(Number([]))//0
console.log('12'+12)//1212
console.log('12'+[1])//121
console.log(String([1]))//1
console.log('12'+[1,12])//121,12
console.log('12'+{})//12[object Object]
console.log('12'+{1:1})//12[object Object]
console.log(null+'1')//null1
console.log(undefined+'1')//undefined1
console.log(undefined+1)//NAN
console.log(null+1)//1
console.log(Number(undefined))//NAN
console.log(Number(''))//0
console.log(Number(null))//0
console.log(Number(false))//0
console.log(Number(null))//0
console.log(Number(true))//1
console.log(String(true))//true
console.log(true+1)//2
console.log(true+'1')//true1
console.log({}==[])//false
console.log(Number({}))
双等号隐式类型转换
1.number string object不同类型比较都转换成统一类型(可理解为number或string)再进行比较
2.相同类型比较直接比较值即可,注意object引用类型的值都是引用
3.null undefined 用双等号和其他类型都不相等 但是null和undefined彼此相等
console.log([] == [])//false
console.log('12' == 12)//true
console.log(1==true)//true
console.log(0==false)//true
console.log(0=='')//true
console.log(0==[])//true
console.log(0=={})//false
console.log(0==null)//false
console.log(0==undefined)//false
console.log(undefined==undefined)//true
console.log(null==null)//true
console.log(null==undefined)//true
console.log(null=={})//false
console.log(1.111=='1.111')//true
console.log([1]=='1')//true
console.log(false == '')//true
console.log(String({}))//[object Object]
console.log(isNaN({}))//true
console.log({}=='[object Object]')//true