起因只是我随意想测试下&&,但是后来发现我一直没注意到的问题
TIM截图20190522105435.jpg
让我纠结的是,负数,我之前一直以为是负数是false,但是才发现,非0即true,负数转布尔是true
1.JS对于逻辑与运算a&&b,如果a不成立(运算后结果是false,null,'',0,undefined等值,下同)则返回a,如果a成立则返回b,如果使用&&连接了多个表达式,如果每个表达式都成立,则返回最后一个表达式的运算结果,如果有至少一个不成立,则返第一个不成立的表达式的运算结果
2.JS对于逻辑或运算a||b,则是从左边开始,返回第一个成立的表达式的运算结果,如果全部不成立则返回最后一个表达式的运算结果。
3.&&优先级高于||,先运算&&再用&&运算的结果去||运算。
好的,了解了,但是当我输入-1==true的时候,又返回了false,当时就蒙圈了,于是求助百度
1.如果有一个操作数是布尔值,则在比较相等性之前先将其转换为数值——false转换为0,而true转换为1;
- 如果一个操作数是字符串,另一个操作数是数值,在比较相等性之前先将字符串转换为数值;
好了,知道了,因为有一个值是布尔值,一个是数字,先将布尔值转数字
所以-1==true相当于-1==1;这样就明明白白了,当然是false
也就是说数字和除了0和1,其余==判断都肯定都是false
参考https://www.cnblogs.com/wl521/p/7423852.html
https://www.51-n.com/t-4207-1-1.html
网友评论