隐式转换
1.=是赋值
2.严格模式=== 先判断类型,再判断值
console.log('123'===123);//false
console.log(null===undefined);//false
console.log(undefined===undefined);//true`
3.==如图
1.null==undefined;
console.log(null==undefined);//true
2.一边是数值,一边是字符串,字符串会转数值;
console.log('123'==123);//true
3.布尔值会转数值
true->1
false->0
console.log(1==true);//true
console.log(0==false);//true
4.左边是对象时,如果右边是字符串或者数字时,左边会转为基本型。
console.log(new String("hello")=='hello');//true
console.log(new String("22")==22);//true
console.log(new Boolean(true)==1);//true
其他都是false
对象是用引用去比较,而不是值。两个对象永远不会相等,但是一边是对象,另一边是字符串或者数值,对象会转换成基本类型后进行比较。
console.log(new String("22")==new String("22"));//false
console.log(new Array(1,2)==[1,2]);//false
console.log(new Object()==new Object());//false
console.log([1,2]==[1,2]);//false
var x=new Object();
console.log(x===x);//true
NaN不等于NaN
console.log(NaN===NaN);//false