javascript - 这段代码为什么能输出
伊谢尔伦
伊谢尔伦 2017-04-10 15:40:55
[JavaScript讨论组]
if('1'=='2'||'33'){
    console.log(2222)
}

这段代码为什么控制台可以打印出来??
伊谢尔伦
伊谢尔伦

小伙看你根骨奇佳,潜力无限,来学PHP伐。

全部回复(5)
迷茫

你分别验证下这两个判断条件就知道了啊

在if里面只要不是null undefined '' false 其他字符串都是被强制转换成了true

巴扎黑

'1'=='2'||'33'
==>
('1'=='2')||'33'
==>
false||'33'
==>'33'
==>true

console.log('1'=='2'||'33');//'33',转为Boolean 为 true

1)javascript中任何值都可以作为运算数执行逻辑运算,只需要其能转换为Boolean类型
2)javascript中
或逻辑运算符,在第1个操作数能装换为Boolean类型并为false的情况下,会计算并返回第2个运算操作数的值
与逻辑运算符, 在第1个操作数能装换为Boolean类型并为false的情况下,不继续计算第2个运算操作数,直接返回第1个操作数;如果第1个操作数能装换为Boolean类型并为true的情况,那么继续计算第2个运算操作数并返回

天蓬老师

“33”转化为布尔值为true啊,所有if里面的语句是会被执行下去的。当然就会被打印出来的。

PHP中文网

1.虽然在你这个问题之中,if中的表达式计算是从左到右的。但是我还是想说在看一个表达式的运算时,首先的注意运算符的优先级。关于运算符的优先级,可翻看《javascript》权威指南p66页。

2.嗯。现在进入正题,首先,'1'=='2',在经过类型转换后,判断得出false,接着进行false || '33'的运算,这里
注意对于逻辑运算符||,&&的返回值不是布尔值,切记。对于||运算符,左边判断出为假,会接着对'33'进行逻辑判断,这里你的切记当值为null、undefined、-0、+0、NaN、''时,计算出来都为false,其它情况都为true。所以对'33'进行逻辑判断,结果为true,并且返回'33',现在的表达式应该就是这样if('33'),然后进行布尔转换得出true,所以后面{}里的语句就不再执行。

伊谢尔伦

|| 运算符将两边的变量转换为bool型,‘33’转换后是true

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

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