首頁  >  文章  >  web前端  >  JavaScript 值與引用

JavaScript 值與引用

PHPz
PHPz原創
2024-07-18 00:40:191158瀏覽

JavaScript values vs reference

了解 JavaScript 中如何保存變數:作為值或引用

在 JavaScript 中,或者更確切地說,在程式設計中,變數是電腦記憶體中用於儲存資料的位置。變數被聲明(給定名稱、標識符),並且可以立即或稍後分配一個值,具體取決於語言。然後可以在程式中稍後引用該變量,而不是再次明確地聲明相同的值。

在 JavaScript 中,資料以值的形式傳遞,這些值可以是原始值或物件值。身為 JavaScript 開發人員,了解 JavaScript 如何處理資料對於擁有紮實的語言基礎至關重要。

原始值包括:

  • 字串。
  • 數字。
  • 布林值。
  • BigInt。
  • 符號。
  • 未定義。

另一方面,物件值是:

  • 數組。
  • 功能。
  • 物體。

這些值類型在傳遞時表現不同,請考慮下面的程式碼片段:

var myName = "Fred";
var otherName = myName;
myName = "艾希莉";
console.log(我的名字); //艾希莉
console.log(其他名稱); //弗雷德

請注意,otherName 保持不變,儘管它看起來像是 myName 的「副本」。事實上,實際發生的情況是,當 otherName 被分配給 myName 時,它並沒有被分配為字串「Fred」的副本,而是創建了一個新字串「Fred」。因此,myName 和 otherName 之間沒有直接連結。這就是 JavaScript 傳遞原始值的方式。

物件值的處理方式不同,請看下面的程式碼片段:

var myObj = {顏色:「紅色」};
var otherObj = myObj;
myObj.color = "藍色";
console.log(myObj.color); //藍色
console.log(otherObj.color); //藍色

這裡,建立了物件並將其指派給 myObj,然後將其指派給 otherObj,看看如何僅透過變更 myObj 的色彩屬性來變更 otherObj 和 myObj 色彩屬性。這是因為物件值作為參考傳遞。 myObj 不是直接引用該對象,而是指向其引用,然後將 otherObj 分配給 myObj,它是對真實對象的引用。因此,兩個變數都連結到同一個對象,因為它們指向相同的引用,其中一個變數的變更會影響另一個變數。

這就是為什麼兩個物件的比較(===)直接傳回 false,您實際上是在比較兩個不同的參考。這裡, myObj === otherObj 傳回 true,因為我們正在比較相同的引用。

我希望這能讓您對 JavaScript 在幕後如何運作有一個全新的視角。

在那之前,請保持沒有錯誤。

以上是JavaScript 值與引用的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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