有人可以解释以下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
如果以错误的方式解释代码,任何人都可以纠正我的理解。
答案 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的问题,分为三部分,
( ... )
grouping,优先级最高为20,
+
adition,优先级为13,
>
greater than(此处)最低的11岁。
这意味着首先评估具有较高优先级的运算符,而使用较低优先级的运算符。
(true + false) > 2 + true
(true + false) -> 1
2 + true -> 3
1 > 3 -> false