Javascript 为什么Events[--i]返回值,而Events[i-1]不返回值
我编写了一个discord bot,并拥有一个命令调用的函数。 但是事件[--i]和事件[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],
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]