首页 > alter(a==!a)返回值为true,请问a=?

alter(a==!a)返回值为true,请问a=?

现在知道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...

【热门文章】
【热门文章】