javascript - alter(a==!a)返回值为true,请问a=?
PHP中文网
PHP中文网 2017-04-11 12:13:26
[JavaScript讨论组]

现在知道a="0"a=" ",A=new Array()。但是不明白其中的道理,a="0",还能理解,但是后面两个就理解不了。特别是最后一个。

PHP中文网
PHP中文网

认证0级讲师

全部回复(4)
天蓬老师
Boolean('0') == true // 非空字符串
Boolean(' ') == true // 非空字符串
Boolean([]) == true // 对象

'0' == false // Boolean(Number('0'));
' ' == false // Boolean(Number(' '));
[] == false // // Boolean([].toString());
天蓬老师

在==比较时,相等运算符会先将数据进行类型转换,然后再用严格相等运算符比较
比较字符串和布尔值都会转换成数值,提一下!!符号相当于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来比也不会有错。

答案参考:阮老师的 取反运算符

ringa_lee

理解不了是什么意思喔?
a = new Array() 意思就是 创建一个新的空数组赋值给a 也可以写成 a = [];
前面俩都是字符串赋值给a~~

怪我咯

建议看下JavaScript高级程序设计3的第一章,有很好的解释。找不到资源,联系我

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号