为什么我的for循环有时会执行两次,尽管我使用了break语句?

问题描述 投票:-1回答:1

在下面的代码中,for循环内的第一个if语句有时会触发两次。即使中断声明,它也会两次记录“ hello”,并且两次发送相同的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
        }
    }
javascript node.js for-loop break
1个回答
1
投票

让我为您简化此代码:

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

无论[[]]部分中的内容如何,​​一次调用foo()都无法两次调用console.log("hello")语句。

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

]
© www.soinside.com 2019 - 2024. All rights reserved.