数据的相对比较

两个等号进行比较时的规律
1、对象对象 返回值永远是false
对象包含 数组类 [] 对象类 {}
{}
{}
[][]
{}
[]
两个等号左右的值,只有是不同数据类型的时候,才需要进行转化,如果是相同数据类型,就不需要转化

2、对象字符串
等号两侧数据类型不同,需要转为相同数据类型
将对象转为字符串,调用.toString()方法
{}.toString()-->"[object Object]"
[].toString()-->""
{}
"" "[object Object]""" -->false
[]
"" ""=="" -->true

3、对象数字
第一步将对象转为字符串
第二步将字符串转为数字
第三步数字和数字进行比较
[]
0 --》[].toString()0 -->""0 -->Number("")0-->00 true
{}0 -->{}.toString()0-->"[object Object]"0 -->Number("[object Object]")0-->NaN==0 false

4、对象布尔 最终都转为数字进行比较
第一步将对象转为字符串
第二步将字符串转为数字
第三步将布尔转为数字
第四步数字和数字进行比较
[]
true
第一步:[].toString()Number(true) --》""1
第二步:Number("")1 --> 01
返回值:false
{}false
第一步:{}.toString()
Number(false)-->"[object Object]"0
第二步:Number("[object Object]")
0-->NaN==0
返回值:false

5、字符串数字
将字符串转为数字
"123"
1 -- >Number("123")1 --> 1231 false

6、字符串布尔
字符串转为数字 布尔转为数字
"1"
true Number("1")Number(true) --> 11 true
"1"!"" Number("1")!Boolean("") --> 1!false --> 1true-->1Number(true) -->11 true

7、数字==布尔
布尔转为数字
true -- 》1
false --》0

8、nullundefined true
null
=undefined false

9、null==其他数据类型 永远是false
undefined == 其他数据类型 永远是false

10、NaN==NaN 永远是false

在运算之前,分清楚等号两侧的数据类型
(1+1)(1+2)
2
3
等号两侧如果有运算,先进行运算,等号两侧是进行最终值的比较

[]![]
对象
布尔
[].toString() --> "" --> Number("") --> 0
![]--!Boolean([])-->!true-->false--Number(false)--> 0
0==0 true

parseFloat("3.4b")Number("3.4")
数字
数字
3.4=3.4 true

!{}false
布尔
布尔
!{} -- > !Boolean({})-->!true-->false
false
false==false true

![]0
布尔
数字
![]--!Boolean([])-->!true-->false--Number(false)--> 0
0
0==0 true

!([]{})
!(这个结果取反) !(对象
对象)!(false) --》true

[][].toString()
对象
字符串
[]-->[].toString()-->""
[].toString()-->""
""=="" true

{name:123}!false
对象
布尔
{name:123}--》{name:123}.toString()-->"[object Object]"-->Number("[object Object]")-->NaN
!false-->true-->Number(true)-->1
NaN==1 false

1{}
数字
对象
1
{}--》{}.toString()-->"[object Object]"-->Number("[object Object]")-->NaN
1==NaN false

"1"[1]
字符串
对象
"1"
[1]-->[1].toString()-->"1"
"1"=="1" true

1=parseInt("1.2nxskdjsk")
数字
=数字
1===1 true

posted @ 2017-06-08 20:52  Juphy  阅读(281)  评论(0编辑  收藏  举报