2 回答

TA贡献1818条经验 获得超3个赞
在我看来,在这种情况下这是不必要的,但这是因为如果current.classList.remove('current')不执行,则内部代码setTimeout(() => current.classList.remove('current'));将最后执行。这就像保险一样。看短论:
console.log('One');
setTimeout(()=>console.log('Two'));
console.log('Three');
The console logs: One, Three, Two.
发生这种情况是因为 setTimeout 中的代码设置为回调队列,并且只有在堆栈为空时才会执行,因为 setTimeout 是一个异步函数。(setTimeout是一个Web API函数,所以在入栈后回调队列前会被推送到Web API框)

TA贡献1898条经验 获得超8个赞
因为它是一个 setTimeout,所以这个函数调用:
() => current.classList.remove('current');
发生在与全局上下文完全不同的执行上下文中(顺便说一句,如果您在 setTimeout 中发出第二个参数,那么这意味着它在 0 毫秒内发生,尽管是瞬时的,但它仍然发生在正常事件循环之外给定它的本质是一个 setTimeout 函数)
因此,我认为 Brad 将其作为故障安全证明,即如果您垃圾邮件地单击下一个或上一个按钮,则指向您刚刚跳过的当前幻灯片的指针将始终从其 classList 中删除“当前”类。
添加回答
举报