如果不能搞懂原生 JS 的數值會怎麼變化,後續在編寫程式會遇上不小麻煩
call by value
在 JS 中的基本型別值,其賦予值的方式為此。
在做指派運算子時,其實是將 變數
指向 值
。
1 | let a = 10 |
上述例子,即使 a 變動了, b 不會因此而跟著改變。
因為在 b = a
時, b 這個變數指向了 a 原本所指向的值 10
call by reference
1 | let c = [1, 2, 3, 4] |
特別要注意的是,跟基本型別不同,
以上面為例,在複合型別時,
他們只會指向該 array, 而該 array 內的 的各個 slot 會再指向其儲存的 值
因此 d = c
之後改動了 c[0] 這個位址的值
d 也會跟著變化。
除了 array
,同樣的事情也會發生在 object
結論
基本型別值: call by value
複合型別: call by reference
reference
https://blog.techbridge.cc/2018/06/23/javascript-call-by-value-or-reference/)