很早的問題,記錄一下
function fn(a, b ,c) {
a = a * 10;
b.item = 'changed'
c = { item: 'changed'}
}
var num = 10;
var obj1 = {item: 'unchanged'}
var obj2 = {item: 'unchanged'}
fn(num, obj1, obj2)
參數是按值傳遞的,但是傳遞的值,本身就是一個引用,技術上來說,這是按共享傳遞
對象參數的傳遞實際上是一個對象的地址。
當我們改變值本身的時候,不會對該值造成改變;但是修改值的內部屬性的時候,會導致值的變化
1. 調用函數,拷貝實參給形參
2. 函數內部操作的是函數的局部變量,不影響實參的值
3. 修改值的屬性,實際是通過地址找到對象並修改對象的值,則會影響到實參