1. ホーム
  2. javascript

[解決済み] JavaScriptで「var that = this;」とはどういう意味ですか?

2022-03-14 15:59:57

質問

JavaScriptのファイルで、私は見ました。

function Somefunction(){
   var that = 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
    });
});

私の回答は、もともとjQueryで実証したもので、ごくわずかな違いしかありません。

$('#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
    });
});

なぜなら this は、新しい関数を呼び出してスコープを変更すると頻繁に変更されるため、これを使用して元の値にアクセスすることはできません。 それをエイリアスで that の元の値にアクセスすることができます。 this .

個人的には that をエイリアスとして使用します。 特に関数が数行より長い場合、それが何を指しているのかが明らかになることはほとんどありません。I 常に は、より説明的なエイリアスを使用します。 上記の例では、私はおそらく clickedEl .