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

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

Linda Hamilton
發布: 2024-12-05 05:50:10
原創
309 人瀏覽過

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

在巢狀函數中存取this:解開var that = this;

在JavaScript 中,理解至this 的範圍和值關重要。考慮以下程式碼片段:

1

2

3

4

function Somefunction() {

  var that = this;

  ...

}

登入後複製

為什麼要聲明它並為其分配值?

為了理解此技術的目的,讓我們想像一個場景:

1

2

3

4

5

6

7

8

9

10

var colours = ['red', 'green', 'blue'];

document.getElementById('element').addEventListener('click', function() {

  // this points to the clicked element

  var that = this;

 

  colours.forEach(function() {

    // this is undefined within this inner function

    // that still refers to the clicked element

  });

});

登入後複製

forEach 回呼中的 this 指的是當前數組元素,而不是單擊的元素。但是,這會維護對單擊元素的參考。

當您進入巢狀函數時,其範圍可能會發生變化,從而難以存取原始值。將此別名設為 that 可確保原始值仍可存取。

請注意,將其用作別名並不總是最佳的。最好使用更具描述性的別名,清楚地表明它所指的內容,尤其是在複雜的函數中。

以上是為什麼在巢狀 JavaScript 函數中使用 `var that = this;`?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板