Javascript、setTimeout()のthis問題。

直前の記事でsetTimeout()について触れたので、ついでにメモ。

下記ページより引用。
window.setTimeout – Web API リファレンス | MDN

 

setTimeout() によって実行されるコードは、setTimeout() が呼び出された関数とは別の実行コンテキスト内で実行されます。結果的に、呼び出された関数の this キーワードは window (または global) オブジェクトに設定され、setTimeout が呼び出された関数の this 値と同じにはなりません。この問題は JavaScript リファレンス でより詳細に説明されています。

 

とのこと。

一定間隔で定期実行したい処理などを記述する際、setTimeout()を用いると便利であるが、いつもの感覚でthisを使うと意図しない動作になるので注意されたし。