我想在这里做算术.我这样做的原因是为了防止乱码if else检查,d有时是null或undefined.
但是以下代码给了我一些意想不到的东西 谁能告诉我发生了什么?谢谢.
var t = 2;
var d = 2;
t + (d && 1 || 0) // logs 3
t + d && 1 || 0 // logs 1
Run Code Online (Sandbox Code Playgroud)
运营商优先权 如果您执行t + (d && 1 || 0)括号内的所有操作,则在从左到右添加之前调用.但是如果你这样做,t + d && 1 || 0那么在这些逻辑运算符之前执行加法.
所以更详细地说,让我们用它们的数值替换这些变量:
2 + (2 && 1 || 0)变2 + (1 || 0)变2 + 1变32 + 2 && 1 || 0变4 && 1 || 0变1 || 0变1 注意:除了零的任何数变成true转换时在JavaScript为布尔值和true本身变得1转换回为数值表示的时候.这就是为什么只要不为零a && b就会屈服ba
| 归档时间: |
|
| 查看次数: |
46 次 |
| 最近记录: |