ホームページ >ウェブフロントエンド >jsチュートリアル >JavaScript の入れ子関数で `var that = this;` を使用する理由

JavaScript の入れ子関数で `var that = this;` を使用する理由

Barbara Streisand
Barbara Streisandオリジナル
2024-12-02 10:51:11303ブラウズ

Why Use `var that = this;` in JavaScript Nested Functions?

「var that = this;」とは何ですか?構文 JavaScript で実現しますか?

JavaScript では、次のようなコード ブロックがよく見られます:

function Somefunction(){
   var that = this; 
   ... 
}

この構文は、this の値を that という名前の変数に割り当てます。 。このイディオムの目的は、ネストされた関数内で正しい this コンテキストへの参照を保持することです。

その必要性を説明するために、次の例を考えてみましょう。

var colours = ['red', 'green', 'blue'];
document.getElementById('element').addEventListener('click', function() {
    // this is a reference to the element clicked on

    var that = this;

    colours.forEach(function() {
        // this is undefined
        // that is a reference to the element clicked on
    });
});

匿名関数内forEach に渡されると、スコープが変更されたため、this キーワードはクリックされた要素を参照しなくなります。これをそれに割り当てると、ネストされた関数内で必要な参照を保持できるようになります。

$('#element').click(function(){
    // this is a reference to the element clicked on

    var that = this;

    $('.elements').each(function(){
        // this is a reference to the current element in the loop
        // that is still a reference to the element clicked on
    });
});

実際には、コードの可読性を高めるために、これに対してより説明的なエイリアスを使用することが有益です。たとえば、上記の例では、clickedEl の方が適切な選択となります。

以上がJavaScript の入れ子関数で `var that = this;` を使用する理由の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。