こんにちは、さち です。
今回は、JavaScript の「関数」の中で使ったときの this
について書いていきます。
実は this
の中身は、「function」と「アロー関数」どちらを使うかで異なるんです。
この違いはエラーの原因になりかねません。ぜひ覚えておきましょう。
関数の書き方で「this」の中身が変わる
HTML
<button id="btn" >ボタン</button>
JavaScript
var elm = document.getElementById('btn'); // function を使った場合 elm.addEventListener('click', function() { console.log(this);// -> <button id=btn> }); // アロー関数を使った場合 elm.addEventListener('click', ()=> { console.log(this);// -> Window });
elm
に addEventListener
を使って、「function」と「アロー関数」2種類のイベントを設定しました。
この「イベント」が発火すると、「function」の方の this
はイベントを設定した要素 elm
になりますが、「アロー関数」の方の this
は Window
になります。
関数内で this
を使いたい場合は、この違いに注意しましょう。
コメント