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

Posted 小龙小龙小龙

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我所理解的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相等。

 

以上是关于我所理解的javascript的隐性类型转化。的主要内容,如果未能解决你的问题,请参考以下文章

整数字符串转化

隐性改变display类型

隐性改变display类型

我所理解的Delphi中的数组类型

Sql 2000 中如何把nvarchar 转化为Float?

Java泛型理解