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

时间:2020-02-17 10:02:05

标签: javascript node.js for-loop break

在下面的代码中,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
        }
    }

1 个答案:

答案 0 :(得分:1)

让我为您简化此代码:

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

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

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