【问题标题】:JavaScript only run operation if the operation result is < 100 [closed]JavaScript 仅在操作结果 < 100 时才运行操作 [关闭]
【发布时间】:2020-08-30 10:21:56
【问题描述】:

如何在 JavaScript 中运行一个操作,仅当操作结果为

我尝试了以下代码,但 += 操作执行了两次,但我只希望它在 if 语句之后执行。

let progress = 0

function earn(howmuch) {
    if (progress += howmuch < 100) {
        console.log(progress) // console.logs 1
        progress += howmuch
        console.log(progress) // console.logs 2
    }
}

document.querySelector('.click-area').addEventListener('click', function() {
    earn(1)
}

感谢您的帮助

【问题讨论】:

  • += 运算符是加法 (+) 和赋值 (=) 的组合。您不希望在 if 条件中分配作业部分:(progress += howmuch &lt; 100) -> ((progress + howmuch) &lt; 100)
  • 谢谢你现在它工作。其实是有道理的,但我没想到

标签: javascript if-statement operators operation


【解决方案1】:

+= 是一个作业。

在您的情况下,增加发生在条件检查和 if 内部。

你应该将条件中的+=改为+,这样值就不会改变,只是临时计算出来的

【讨论】:

    【解决方案2】:

    您必须在条件之外对变量进行计算,以便根据需要进行比较。

    这里有一个例子:

    let progress = 0;
    
    function earn(howmuch) {
        let new_progress = progress + howmuch;
        if (new_progress < 100) { // Here you had the problem
            progress = new_progress;
            console.log(progress); // console.logs 1
        }
    }
    
    document.querySelector('.click-area').addEventListener('click', function() {
        earn(1)
    });
    &lt;button class="click-area"&gt;Click&lt;/button&gt;

    在您的情况下,您在条件中进行了分配+=,直到下一行才生效。

    在条件前一行做计算,解决问题。

    【讨论】:

    • 我已经修改了答案
    猜你喜欢
    • 1970-01-01
    • 2023-03-18
    • 2019-09-17
    • 2020-11-28
    • 2017-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多