换句话说,为什么不显示警告?
var x;
if (x = 1 && x > 0) {
alert(x);
}
据我所知,x = 1应该为x分配1并且还返回1. x> 0检查失败。为什么呢?
答案 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);
}