首頁 > web前端 > js教程 > JavaScript 中按值傳遞和按引用傳遞有什麼不同?

JavaScript 中按值傳遞和按引用傳遞有什麼不同?

Susan Sarandon
發布: 2024-12-22 13:49:10
原創
834 人瀏覽過

What's the Difference Between Pass by Value and Pass by Reference in JavaScript?

JavaScript 中的引用傳遞與值傳遞

在JavaScript 中將資料傳遞給函數時,了解引用傳遞和引用傳遞之間的區別至關重要並按值傳遞。這種差異影響資料在函數和呼叫者之間共享和修改的方式。

按值傳遞

對於原始資料類型(字串、數字、布林值),JavaScript總是會以值傳遞。這意味著創建原始值的副本並將其傳遞給函數。函數內對副本所做的任何變更都不會影響函數外的原始變數。

依引用傳遞

物件(包括陣列)依引用傳遞在 JavaScript 中。這意味著該函數接收物件的引用,而不是副本。函數內對物件屬性所做的任何變更都會影響函數外部的原始物件。

範例

考慮以下函數:

function f(a, b, c) {
  a = 3;
  b.push("foo");
  c.first = false;
}
登入後複製

使用下列參數呼叫時:

var x = 4;
var y = ["eeny", "miny", "mo"];
var z = {first: true};
f(x, y, z);
登入後複製

x 的值保持不變,因為它是按值傳遞的。原來的y數組是透過push()操作直接修改的,所以它的內容改變了。同樣,z的第一個屬性被修改,影響原始物件。

獨立物件複製

要建立物件的完全獨立副本,需要使用一種建立具有相同屬性值但不引用原始物件的新物件的方法。常見的方法是使用 JSON.parse(JSON.stringify()) 技術:
var newObject = JSON.parse(JSON.stringify(originalObject));
登入後複製

以上是JavaScript 中按值傳遞和按引用傳遞有什麼不同?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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