为什么JS无视这种情况,并依靠自己的行为?

时间:2017-08-05 13:32:33

标签: javascript conditional-statements

这是减少游戏生命阶段之间间隔的代码。

 document.getElementById("intervalMinus").addEventListener("click",function() {
    var intervalToMinus = +document.getElementById("labelInterval").innerHTML - 100;
    (intervalToMinus < 100) ? intervalToMinus += 90 : intervalToMinus;
    (intervalToMinus <= 0) ? intervalToMinus == 10 : intervalToMinus;
    document.getElementById("labelInterval").innerHTML = intervalToMinus;
    changeInterval();
  });

当您点击按钮时,它会将间隔减少100,但如果间隔已经小于100,则减少10。

(intervalToMinus > 0) ? intervalToMinus == 10 : intervalToMinus;

这部分应该保证间隔永远不会变为负面。但它不起作用!我检查了chrome调试器,看到JS只是忽略了这个特定的行。
intervalToMinus等于0.条件为真。不行。为什么呢?

2 个答案:

答案 0 :(得分:0)

您没有分配新值,只是在此处测试相等性:

(intervalToMinus <= 0) ? intervalToMinus == 10 : intervalToMinus;

你想要的可能就是:

(intervalToMinus <= 0) ? intervalToMinus = 10 : intervalToMinus;

注意单个'='而不是“==”。

答案 1 :(得分:-1)

我不知道你在用这些线做什么:

(intervalToMinus < 100) ? intervalToMinus += 90 : intervalToMinus;
(intervalToMinus <= 0) ? intervalToMinus == 10 : intervalToMinus;
document.getElementById("labelInterval").innerHTML = intervalToMinus;

这是作业,条件和价值的混合......

例如:

(intervalToMinus < 100) ? intervalToMinus += 90 : intervalToMinus;
如果intervalToMinus < 100,则

将不返回任何内容(但将变量增加90),如果没有,则返回intervalToMinus

所有这些都应该用“正常”if语句写成。

增加:

你应该这样写:

if (intervalToMinus < 100) {
  intervalToMinus += 90;
}
if (intervalToMinus <= 0) {
  intervalToMinus = 10;
}
document.getElementById("labelInterval").innerHTML = intervalToMinus;

更具可读性。