函數參數是什麼傳遞

很早的問題,記錄一下

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. 修改值的屬性,實際是通過地址找到對象並修改對象的值,則會影響到實參

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章