Javascript 为什么Events[--i]返回值,而Events[i-1]不返回值

Javascript 为什么Events[--i]返回值,而Events[i-1]不返回值,javascript,Javascript,我编写了一个discord bot,并拥有一个命令调用的函数。 但是事件[--i]和事件[i-1]的返回值完全不同 TIMEDURATION = 500; Events = []; const deleteAllEvents = (channelID, commandID) =>{ for(i=1;i<Events.length+1;i++){ setTimeout(()=>{ console.log(Events[--i],

我编写了一个discord bot,并拥有一个命令调用的函数。 但是事件[--i]和事件[i-1]的返回值完全不同

TIMEDURATION = 500;
Events = [];

const deleteAllEvents = (channelID, commandID) =>{
    for(i=1;i<Events.length+1;i++){
        setTimeout(()=>{
            console.log(Events[--i], Events[i-1]);
            bot.deleteMessage({
                channelID,
                "messageID" : Events[--i]
            })
        }, (TIMEOUTDURATION*i));
        setTimeout(()=>{
            bot.deleteMessage({
                channelID,
                "messageID" : commandID
            }, ()=>{
                Events = []
            })
        }, TIMEOUTDURATION*Events.length+1)
    }
}

应该返回相同的东西,但是

Events[--i]

不要返回相同的东西,但它们应该返回。事实上,第一条语句有一个有效的返回值,而第二条语句返回未定义的值

当您只运行代码时,它实际上运行得很好,但是如果与其他代码一起使用,它不会运行,但是我看不出周围的代码有问题。
对于任何感兴趣的人,我都会将其发布到GitHub上。

--我导致i永久减少1..Gitrepo:@Estradiaz我知道这就是为什么事件[i-1]只返回未定义的,但应该给出相同的索引?你的
i
是一个全局变量,这使一切变得更复杂。但这是我唯一的循环,所以为什么问题事件也是全局的,但它似乎无法在超时函数中访问。。。
i=3
console.log(i-1) ==> 2
Events[--i]
Events[i-1]