javascript中的类型转换可以分为隐性类型转换,显性类型转换。显性转换就是在代码中通过方法直接改变数据类型。常见的方法有toString,toValue,toNumber,toBoolean等等。隐性类型就是程序在执行是会自动的就进行类型转换。
javascript中最常见的会进行隐性类型转换的操作符是==,当然操作符+也会进行隐性类型转换。
下面举几个例子。
console.log(undefined==‘undefined‘);
console.log(undefined==null);
console.log(true==2);
console.log({}=={});
第一个打印的是false,第二个打印的是true,第三个打印的是false,第四个打印的是false.
第一个false是因为undefined不会进行隐性类型转换。
第一个true,虽然undefined不会进行隐性类型转换,但是null和undefined 相等;
第二个false是因为true会转换为1,而不是2转换成true。这个问题相信大多数初学者会遇到。
第四个false是因为对象之间的比较是比较引用之间的比较。第一个{}对象跟第二个{}对象地址是不同的。
总结下:==操作符
1.看操作数有没有boolean类型,如果有先将boolean类型变成number类型。
2.看操作数有没有字符串类型,如果是两个都是字符串类型就直接比较;如果一个是字符串,一个是对象,对象转字符串再比较;如果一个是字符串,一个是数值,字符串转数值再比较。
3.看操作数有没有对象类型,如果两个都是对象就直接比较;如果一个是对象一个是数值,对象转数值再比较。
4.null,undefined不会进行类型转换,但是null,undefined相等。