扫码关注官方订阅号
上面一段中,把 ' '当做true 来处理了,下面确是 ' ' == false ,这是为什么呢?(单引号之间有个空格)
人生最曼妙的风景,竟是内心的淡定与从容!
' ' && 'c'对于&&操作,左边的操作数会转为布尔型。对于字符串来说,在转为布尔型时,除了空字符串作为false处理,其他的都作为true。所以' '被转为true,结果为右操作数'c'。
' ' && 'c'
&&
false
true
' '
'c'
' ' == false对于==操作,两个操作数会被转为数字型。对于' ',转为数字型时就是0;而false转为数字型时也是0。所以两边相同,结果为true。
' ' == false
==
规则是:
如果有一个操作数是NaN,马上返回false。
如果有一个操作数是boolean值,则在比较相等性之前,先转成数值,false转0,true转1。
如果一个操作数是字符串,另一个操作数是数值,在比较相等性之前先将字符串转为数值。
如果一个操作数是对象,另一个操作数不是,则调用对象的valueOf方法,用得到的基本类型值按照前面 的规则进行比较。
null == undefined --> true
如果两个操作数是对象,则比较它们是不是同一个对象,如果两个操作数都指向同一个对象,则相等 操作符返回true,否则,返回false
按照上面的规则2,可知,false --> 0。所以问题转成 ' ' == 0。然后根据规则3。' '会转成数字0,0 == 0 当然返回true了。。
请看我写的关于转型的文章。链接描述
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
' ' && 'c'
对于
&&
操作,左边的操作数会转为布尔型。对于字符串来说,在转为布尔型时,除了空字符串作为false
处理,其他的都作为true
。所以' '
被转为true
,结果为右操作数'c'
。' ' == false
对于
==
操作,两个操作数会被转为数字型。对于' '
,转为数字型时就是0;而false
转为数字型时也是0。所以两边相同,结果为true
。== 引起的转型
规则是:
如果有一个操作数是NaN,马上返回false。
如果有一个操作数是boolean值,则在比较相等性之前,先转成数值,false转0,true转1。
如果一个操作数是字符串,另一个操作数是数值,在比较相等性之前先将字符串转为数值。
如果一个操作数是对象,另一个操作数不是,则调用对象的valueOf方法,用得到的基本类型值按照前面 的规则进行比较。
null == undefined --> true
如果两个操作数是对象,则比较它们是不是同一个对象,如果两个操作数都指向同一个对象,则相等 操作符返回true,否则,返回false
按照上面的规则2,可知,false --> 0。
所以问题转成 ' ' == 0。
然后根据规则3。' '会转成数字0,
0 == 0 当然返回true了。。
请看我写的关于转型的文章。链接描述