質問: () => { console.log("scrolled"); }; ``` スクロールイベントはどのような条件が揃うと発火するのでしょうか? scroll - Event reference | MDNなどにも条件については書かれていないようです。
回答: おおざっぱに言うと、暇なときにイベントが発火します。1つの要素に対して複数のイベントが溜まることはありません。 規格にのっとって説明すると(12.2. Scrolling)、ブラウザがスクロール処理を行うとスクロールした要素が pending scroll event targets に溜められます。すでに要素が pending scroll event targets に入っている場合は何もしません。このため、どんなにたくさんスクロールしても、後述の処理が始まるまでは最大1つの `scroll`イベントしか予約されません。 イベントループに入ったときに、run the scroll steps が起動され、pending scroll event targets に対して `scroll` イベントを発火します。 ただし、scroll イベントハンドラはページを重くする要因となっていることが多いので、実際のブラウザではイベントループで毎回 run the scroll steps を起動していないかもしれません。