我所理解的javascript的隐性类型转换。

    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相等。

 

posted @ 2017-03-22 11:37  小龙小龙小龙  阅读(235)  评论(0编辑  收藏  举报