0
window.addEventListener('keydown',function keydown_f(e){
if(e.code === 'ArrowDown') {
window.removeEventListener('keydown',keydown_f);
// do something
setTimeout(2000,function(){
window.addEventListener('keydown',keydown_f);
});
}
else if (e.code === 'ArrowUp') {
window.removeEventListener('keydown',keydown_f);
// do something
setTimeout(2000,function(){
window.addEventListener('keydown',keydown_f);
});
}
});
我正在使用上面的代碼來每2秒捕獲一次keydown事件。我想,當2000毫秒後的事件偵聽器添加回(6號線和13號線),它並沒有規定它不會因爲工作什麼參數它不饒人,這就像在第一線我寫事件監聽器的傳遞參數
window.addEventListener('keydown',function keydown_f(){ //without "e"
,並應觸發像
Uncaught ReferenceError: e is not defined
但實際上該代碼工作的錯誤,我不明白爲什麼當監聽器被添加回它承認e
不指定e
作爲放慢參數?
當你參考***函數時,參數自動傳遞,總是這裏沒有什麼不可思議的東西? – adeneo
@adeneo「參數自動傳遞」---這是有點誤導。調用者明確地傳遞它們,它不是「自動的」。 – zerkms
@zerkms - 當然,參數總是必須由調用者傳遞以存在於被調用的函數中,所以我猜你可以說參數是在命名函數和匿名函數中自動傳遞的,假設它們實際上已被傳遞。 OP似乎有的真正問題是認爲命名「匿名」函數會產生任何影響,而忽略函數中的'e'參數總是會使'e'變得不明確,這更加明顯,無論該函數的名稱或調用方式。 – adeneo