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

Why does my for loop sometimes execute twice, despite my use of a break statement?

在下面的代码中,for 循环中的第一个 if 语句有时会触发两次。它记录 "hello" 两次,并且发送两次相同的 SMS,尽管有 break 语句。奇怪的是它只发生了大约 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
        }
    }

让我为您简化这段代码:

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

无论 [...] 部分是什么,console.log("hello") 语句不能为一次 foo() 调用两次。

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