【问题标题】:Why does my for loop sometimes execute twice, despite my use of a break statement?为什么我的 for 循环有时会执行两次,尽管我使用了 break 语句?
【发布时间】:2020-02-17 10:02:05
【问题描述】:

在下面的代码中,for 循环中的第一个 if 语句有时会触发两次。尽管有中断语句,但它会记录两次“你好”,并且发送两次相同的 SMS。奇怪的是,它只发生了大约 30% 的时间。任何帮助表示赞赏。

for (let indexS = prisData.length - 1; -1 < indexS; indexS--) {
        if (prisData[indexS].købt === true && prisData[indexS].købtFor < købsPrisNu - netto) {
            solgtFor = købsPrisNu
            solgt = true
            console.log("hello");
            nexmo.message.sendSms(from, to, 'Sælg wirtek til ' + solgtFor, {type : 'text'},(err, data) => {if (err != null) {console.log(err)}})
            break
        }
        if (prisData[indexS].solgt === true) {
            break
        }
    }

【问题讨论】:

  • for 行之前放置一个console.log("for loop starts")。似乎 hello 被打印两次的唯一方法是 for 循环执行两次。
  • 你能再分享几个变量的值吗?很难复制

标签: javascript node.js for-loop break


【解决方案1】:

让我为你简化这段代码:

function foo()
{
    for ([...]) {
            if (...) {
                [...]
                console.log("hello");
                sendSms();
                break
            }
              [...]
        }
}

不管 [...] 部分是什么,console.log("hello") 语句不能在一次调用 foo() 时被调用两次。

日志语句被多次执行的唯一合理可能性是函数被多次调用或它自己调用(例如,sendSms() 直接或间接调用 foo())。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-31
    • 1970-01-01
    • 1970-01-01
    • 2021-12-24
    • 2016-01-10
    • 1970-01-01
    相关资源
    最近更新 更多