gpt4 book ai didi

带有算术的javascript运算符给出了意想不到的结果

转载 作者:行者123 更新时间:2023-12-02 06:55:30 25 4
gpt4 key购买 nike

我想在这里做算术。我这样做的原因是为了防止有时 if else 检查和 d 为 null 或 undefined 时出现困惑。

但是下面的代码给了我一些意想不到的东西。谁能告诉我发生了什么事?谢谢。

var t = 2;
var d = 2;
t + (d && 1 || 0) // logs 3
t + d && 1 || 0 // logs 1

最佳答案

运营商优先级。如果你执行 t + (d && 1 || 0) 括号内的所有内容都会在从左到右的添加之前被调用。但是如果你做 t + d && 1 || 0 在这些逻辑运算符之前执行加法。

所以更详细地说,让我们用它们的数值替换这些变量:

  1. 2 + (2 && 1 || 0) 变成 2 + (1 || 0) 变成 2 + 1 变成 3
  2. 2 + 2 && 1 || 0 变成 4 && 1 || 0 变为 1 || 0 变成 1

注意:当在 JavaScript 中转换为 bool 值时,除零以外的任何数字都变为 true,而当转换回数字表示时,true 本身变为 1 .这就是为什么 a && b 会屈服于 b,只要 a 不为零

关于带有算术的javascript运算符给出了意想不到的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32158377/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com