js学习之——数据类型间的转换以及==和===的理解

一、数据类型的转换

js是一种松散型语言,js的数据类型由5种基本数据类型和1种引用类型组成,各种数据类型在一定程度上可以进行转换,下面贴上各个类型间强制转换的结果。

1、其他数据类型向Number的转换

 1             Number(1) //1
 2             Number(NaN) //NaN
 3             Number(true) //1
 4             Number(false) //0
 5             Number(undefined) //NaN
 6             Number(null) //0
 7             Number({}) //NaN
 8             Number({a:1}) //NaN
 9             Number([]) //0
10             Number([1,2,3]) //NaN
11             Number("1") //1
12             Number("1.1") //1.1
13             Number("1a") //NaN
14             Number("a1") //NaN
15             Number("0xf") //15
16             Number("031") //31
17             Number("") //0

2、其他数据类型向String的转换

 1         String(1) //1
 2             String(NaN) //NaN
 3             String(true) //true
 4             String(false) //false
 5             String(undefined) //undefined
 6             String(null) /null
 7             String({}) //[Object Object]
 8             String({a:1}) //[Object Object]
 9             String([]) //""
10             String([1,2,3]) //1,2,3
11             

3、其他类型向Boolean的转换

 1        Boolean(1) //true
 2             Boolean(-1) //true
 3             Boolean(0) //false
 4             Boolean(NaN) //false
 5             Boolean("") //false
 6             Boolean("0") //true
 7             Boolean(undefined) //false
 8             Boolean(null) //false
 9             Boolean({}) //true
10             Boolean({a:1}) //true
11             Boolean([]) //true
12             Boolean([1,2,3]) //truer

二、==和等===的理解

==在比较两者是否相等时,会把两边的操作数转换成相同的数据类型然后再进行比较。那具体操作数是转换成什么数据类型呢,下面有一个规则:

1、如果一个值是null,另一个是undefined,则相等。

2、如果一个是数值,一个是字符串,则把字符串转成数值再进行比较。

3、如果一个是true,则把true转为0,同理把false 转为0再进行比较。

4、如果一个值是对象,另一个是数字或字符串,则将对象转换成原始值再进行比较(日期对象转换成字符串,其它对象先尝试调用valueOf()方法再尝试使用toString())

5、其他不同类型的转换都不相等。

6、NaN==NaN    false

===不仅要值相等,还需要类型相等才会相等。有两个特殊的情况,一是NaN===NaN为false,+0===-0为true。

为了避免这两种情况,es6引进了Object.is()方法,使得Object.is(NaN,NaN)为true, Object.is(-0,+0)为false。

原文地址:https://www.cnblogs.com/qiaoyun/p/10560273.html