为什么我不能在Javascript中的同一if语句中分配然后检查变量?

时间:2017-03-07 18:41:57

标签: javascript

换句话说,为什么不显示警告?

var x;
if (x = 1 && x > 0) {
    alert(x);
}

据我所知,x = 1应该为x分配1并且还返回1. x> 0检查失败。为什么呢?

2 个答案:

答案 0 :(得分:4)

实际上,&&操作优先于作业。

在您的情况下,x将是1 && x > 0 false的结果。

var x;
if (x = 1 && x > 0) {
  alert(x);
}
console.log(x); // false

您可以使用括号as shown by Nina Scholz强制执行操作顺序。

答案 1 :(得分:2)

您需要一些代表才能将分配与正在进行的表达分开。

var x;
if ((x = 1) && x > 0) {
    alert(x);
}