首页 > 这段代码为什么能输出

这段代码为什么能输出

if('1'=='2'||'33'){
    console.log(2222)
}

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

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

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


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


'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个运算操作数并返回


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

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


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

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