现在知道a="0"
和a=" "
,A=new Array()
。但是不明白其中的道理,a="0",还能理解,但是后面两个就理解不了。特别是最后一个。
建议看下JavaScript高级程序设计3的第一章,有很好的解释。找不到资源,联系我
在==比较时,相等运算符会先将数据进行类型转换,然后再用严格相等运算符比较
比较字符串和布尔值都会转换成数值,提一下!!符号相当于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来比也不会有错。
答案参考:阮老师的 取反运算符
Boolean('0') == true // 非空字符串
Boolean(' ') == true // 非空字符串
Boolean([]) == true // 对象
'0' == false // Boolean(Number('0'));
' ' == false // Boolean(Number(' '));
[] == false // // Boolean([].toString());
理解不了是什么意思喔?
a = new Array() 意思就是 创建一个新的空数组赋值给a 也可以写成 a = [];
前面俩都是字符串赋值给a~~
http://www.zhihu.com/question...