首頁 > web前端 > js教程 > JavaScript 的值傳遞機制如何影響函數中的基元變數和物件變數?

JavaScript 的值傳遞機制如何影響函數中的基元變數和物件變數?

Mary-Kate Olsen
發布: 2024-12-18 04:34:17
原創
214 人瀏覽過

How Does JavaScript's Pass-by-Value Mechanism Affect Primitive and Object Variables in Functions?

了解 JavaScript 的按引用傳遞與按值傳遞

在 JavaScript 中,傳遞給函數的參數總是會以值傳遞。這意味著將建立原始值的副本,並且原始值不會受到副本所做的任何變更的影響。但是,當值是物件(包括陣列)時,建立的副本是對原始物件的參考。

這個概念會影響變數在函數內修改時的行為:

  • 原始值(例如數字、字串): 當原始值作為參數傳遞並在函數內修改時,函數外部的原始值保持不變。
  • 物件(例如陣列、物件):當物件作為參數傳遞並在函數內修改時,函數外部的原始物件也會被修改。這是因為即使函數接收原始物件的副本,它實際上是對記憶體中同一底層物件的參考。因此,修改函數內引用物件的屬性會影響函數外的原始物件。

例如:

在此範例中,x, y,函數外的z 將具有以下值:x 保持不變為4(原始值),y現在具有附加屬性["foo"](新增的物件屬性),並且z.first 是設定為false(物件屬性已修改)。

要建立物件的完全獨立副本,需要明確地將其所有屬性複製到新物件。這可以使用 Object.assign() 方法或透過遍歷物件並基於舊物件建立具有新屬性的新物件來完成。

以上是JavaScript 的值傳遞機制如何影響函數中的基元變數和物件變數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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