在 javascript/practice
資料夾下,建立 call_by_type.html
來練習。
將資料傳進參數時,要留意類型的部份,有分傳遞「值」、「址」兩種:
傳值:傳遞變數的值。
傳址:傳遞變數在記憶體中的「位址」。物件和陣列屬這類型。
在傳遞參數時,會複製其值至參數之中。
第 8 行:將變數 a 的「值」傳給 add_number 函式,該函式用 x 來做承接。(下一節會提到變數的可視範圍)
物件、陣列皆為傳址呼叫的類型,即在傳遞參數時,傳的是該變數在記憶體中的位址。
示意:
以陣列為例:
概念示意圖:
以物件為例:
延續範例 2,如果我們希望傳進去的陣列、物件,不要影響原來的,做法:
將陣列或物件進行複製,然後再傳遞即可。
以陣列為例:
以物件為例:
先執行以下原始碼,以下第4行,也影響到了 arr1:
請改成 arr1 陣列不影響。(也就是要先進行複製)
參考作法:
先執行以下原始碼,以下第4行,發現也影響到了 obj1:
請改成 obj1 物件不影響。(也就是要先進行複製)
參考作法: