首頁 >web前端 >js教程 >JavaScript 按值或引用傳遞:真實情況是什麼?

JavaScript 按值或引用傳遞:真實情況是什麼?

Mary-Kate Olsen
Mary-Kate Olsen原創
2024-12-28 17:27:55980瀏覽

JavaScript Pass by Value or Reference: What's the Real Story?

JavaScript:引用傳遞與值傳遞揭秘

在 JavaScript 中,常會提出引用傳遞與值傳遞的話題問題。理解這個概念對於有效編程至關重要。

按值傳遞與按引用傳遞

與流行的看法相反,JavaScript 總是按值將參數傳遞給函數。但是,傳遞的值可以是原始資料類型(數字、字串、布林值、null、未定義)或對物件的參考(陣列、物件)。

原始資料與物件

  • 原語:依其實際值傳遞。傳遞值的修改不會影響函數外部的變數。
  • 物件(陣列、物件):透過引用傳遞。對物件屬性的修改會影響函數外部的變數。但是,將整個物件重新指派給新引用不會影響外部變數。

範例:

考慮程式碼片段:

function f(a, b) {
  a = 3;
  b[0] = "foo";
}

var x = 4;
var y = ["eeny", "miny", "mo"];
f(x, y);
  • x 保持不變,因為它是按值傳遞的原語,並且重新分配。
  • y 被修改,因為它是透過引用傳遞的對象,並且其屬性被修改。

獨立物件克隆

建立沒有任何引用的物件的完全獨立副本,最佳實踐是使用 Object.assign()方法或擴充運算子(...).

範例:

const original = { foo: "bar" };
const clone = { ...original };

在此範例中,複製是原始版本的獨立副本。對克隆的任何修改都不會影響原始版本。

以上是JavaScript 按值或引用傳遞:真實情況是什麼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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