首頁 >web前端 >js教程 >為什麼在 JavaScript 巢狀函數中使用 `var that = this;`?

為什麼在 JavaScript 巢狀函數中使用 `var that = this;`?

Barbara Streisand
Barbara Streisand原創
2024-12-02 10:51:11248瀏覽

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 關鍵字不再引用點擊的元素,因為它的範圍已更改。將 this 分配給 that 可以讓我們在巢狀函數中保留所需的引用。

$('#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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn