我最近在一次采访中被问到了这个问题。我知道在JavaScript中评估从左到右。1 && 2应该是假的吧?我在这里读到另一个问题,即1 && 2返回2。而AND返回第一个伪造的值。但是感觉模糊。有人可以详细说明吗?
1 && 2 && 3
Run Code Online (Sandbox Code Playgroud)
相同的
if (1) {
if (2) {
if (3) {
return 3
} else {
return 3
}
} else {
return 2
}
} else {
return 1
}
1 && 2 && 3 //3
1 && 0 && 3 //0
1 && false && 3 //false
false && 0 && 3 //false
1 && 0 && false //0
Run Code Online (Sandbox Code Playgroud)
AND(&&)运算符执行以下操作:
从左到右评估操作数。
对于每个操作数,将其转换为布尔值。如果结果为假,则停止并返回该操作数的原始值。
如果所有操作数均已求值(即全部为真),则返回最后一个操作数。
换句话说,AND返回第一个伪造的值,或者如果找不到则返回最后一个值。当所有值均为真时,将返回最后一个值。
参考:https://javascript.info/logical-operators
1 && 2应该是假的吧?
不,在布尔型上下文中的Javascript中,这些值转换为true。只有6个被转换为数值falsy,他们是:false,0,空字符串(例如'',""), ,null,undefined和NaN。
| 归档时间: |
|
| 查看次数: |
153 次 |
| 最近记录: |