JavaScript 的傳遞行為:按值或按引用
在JavaScript 中,按值傳遞和按引用傳遞的概念在了解變量和物件的行為方式。儘管經常被標記為“按引用傳遞”語言,但事實有些微妙。
以值傳遞物件
將物件作為參數傳遞給對於一個函數,JavaScript 實際上傳遞了對該物件的引用的副本。這意味著在函數內對物件所做的任何修改都會影響原始物件。這是因為引用本身,而不是物件的內容,是按值傳遞的。
修改物件屬性
但是,如果您修改傳遞給物件的任何屬性一個函數,這些變更將在該函數的範圍之外持續存在。例如,為屬性指派新值或新增屬性都會影響原始物件。
原始值透過值傳遞
與物件相反,原始值值(例如字串、數字和布林值)會以值傳遞。這意味著在函數內對這些值的任何修改都不會影響原始值。
有辦法控制傳遞行為嗎?
在 JavaScript 中,有沒有明確的方法來控制某些內容是按值傳遞還是按引用傳遞。但是,了解底層傳遞行為以確保可預測且有效率的程式碼執行非常重要。
範例
範例1:
function modifyByRef(obj) { obj.value = "Modified"; } const obj = { value: "Original" }; modifyByRef(obj); console.log(obj.value); // "Modified"
範例1:
function modifyPrimitive(value) { value = "Modified"; } let value = "Original"; modifyPrimitive(value); console.log(value); // "Original"
最佳實踐建立物件副本
要建立物件的完全獨立副本,您可以使用Object .assign() 或擴充運算子(...) 以及解構。 結論理解 JavaScript 的傳遞行為對於有效地處理變數和物件至關重要。當物件以值(作為參考)傳遞時,函數內的屬性修改會影響原始物件。另一方面,原始值真正是按值傳遞的。識別傳遞行為的能力確保了程式碼的正確性和可預測的結果。以上是JavaScript 是按值還是按引用傳遞變數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!