JavaScript

时间:2018-03-12 09:50:19

标签: javascript boolean

有人可以解释以下JavaScript代码的执行顺序:

(true + false) > 2 + true

我理解使用+运算符超过两个布尔值会将结果返回为0,1或2,具体取决于提供的值。

我通过按以下顺序中断执行将上述代码的输出解释为1:

1) (true + false) // Outputs : 1
2) 1 > 2 // Outputs : false
3) false + true //Outputs : 1

但实际结果是:

false

如果以错误的方式解释代码,任何人都可以纠正我的理解。

2 个答案:

答案 0 :(得分:2)

您的2nd点不正确。

1) (true + false) outputs - 1
2) (2 + true) - outputs 3
3) 1 > 3 - outputs false

您可以使用功能

进行检查

(true + false) > 2 + true

function f1() {
  const cond = true + false;
  console.log(cond);
  return cond;
}

function f2() {
  const cond = 2 + true;
  console.log(cond);
  return cond;
}

console.log(f1() > f2());

如果要与2进行比较然后添加true,则必须将其括在括号中

((true + false) > 2) + true

答案 1 :(得分:1)

你所拥有的是operator precedence的问题,分为三部分,

这意味着首先评估具有较高优先级的运算符,而使用较低优先级的运算符。

(true + false) > 2 + true
(true + false)             -> 1
                 2 + true  -> 3

             1 > 3         -> false