现在知道a="0"
和a=" "
,A=new Array()
。但是不明白其中的道理,a="0",还能理解,但是后面两个就理解不了。特别是最后一个。
现在知道a="0"
和a=" "
,A=new Array()
。但是不明白其中的道理,a="0",还能理解,但是后面两个就理解不了。特别是最后一个。
在==比较时,相等运算符会先将数据进行类型转换,然后再用严格相等运算符比较
比较字符串和布尔值都会转换成数值,提一下!!符号相当于Boolean。
对于非布尔值的数据,取反运算符会自动将其转为布尔值。规则是,以下六个值取反后为true,其他值取反后都为false。
undefined null false 0(包括+0和-0) NaN 空字符串('')
所以:
Number('0') == 0, !'0' == false, Number(false) == 0
Number(' ') == 0, !' ' == false, Number(false) == 0
对象与原始类型值比较时,对象转化成原始类型的值,再比较
所以:
var a = []; a.toString == '', Number('') == 0, ![] == false, Number(false) == 0
这是我的理解,其实这只是一种想法,全部转化为Boolean来比也不会有错。
答案参考:阮老师的 取反运算符
13 回答12.8k 阅读
7 回答2k 阅读
3 回答1.1k 阅读✓ 已解决
2 回答1.2k 阅读✓ 已解决
6 回答927 阅读✓ 已解决
6 回答1.1k 阅读
2 回答1.3k 阅读✓ 已解决