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

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

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

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

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

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

function Somefunction() {
  var that = this;
  ...
}
登入後複製

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

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

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

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