JS隐式转换

1
2
3
4
5
6
7
var log = console.log.bind(this)
log([1,2,3] == "1,2,3")//true
log([] == "")//true
log("" == '')//true
log("" == 0)//true
log(true == 1)//true
log(null == undefined)//true
1
2
3
4
5
6
7
8
log([] == false)//true
log(![] == false)//true
log([] == false)//true
log(![] == false)//true
log(!'' == true)//true
log(!NaN == true)//true
log(!undefined == true)//true
log(!null == true)//true

![]直接转换为布尔值再取反,转换为布尔值时,空字符串(‘’),NaN,0,null,undefined这几个外返回的都是true.

1
2
3
log(undefined == null) //true undefined和null 比较返回true,二者和其他值比较返回false
log(Number(null)) //0
log(Number(undefined)) //NaN

关于NaN:http://www.w3school.com.cn/js/jsref_nan_number.asp