一、基本數據類型: Number, String等都是按值傳遞 var a = 10 function add(num){ num+=10 } add(a) console.log(a) 最後輸出a時,仍然是10,說明a與函數內部的num互不幹擾。其實此時可以把命名參數看成是局部參數,函數運行結束, ...
一、基本數據類型: Number, String等都是按值傳遞
var a = 10 function add(num){ num+=10 } add(a) console.log(a)
最後輸出a時,仍然是10,說明a與函數內部的num互不幹擾。其實此時可以把命名參數看成是局部參數,函數運行結束,它也隨之銷毀。而它是按值傳遞的,複製了記憶體中的一份值給num。所以內部對num的操作不影響全局變數a的值。
二、引用變數賦值
1.多個引用變數指向同一個對象, 通過一個引用變數修改對象內部數據, 另一個引用變數訪問到的是修改後的對象
var obj1 = {} var obj2 = obj1 obj2.name = 'Tom' console.log(obj1.name)//Tom
function f1(obj) { obj.age = 12 } f1(obj2) console.log(obj1.age)//12
都是修改的同一個對象的屬性
2. 多個引用變數指向同一個對象,讓一個引用變數指向另一個對象, 另一個引用變數還是指向原來的對象
var obj3 = {name: 'Tom'} var obj4 = obj3 obj3 = {name: 'JACK'}//obj3指向了另一個對象,此時obj4還是指向原來obj3當初指向的對象 console.log(obj4.name)//Tom function f2(obj) { obj = {name: 'Bob'} }
f2(obj4) console.log(obj4.name)//Tom
執行 f2(obj4) 時,obj指向obj4的地址,然後在函數體內obj又指向了另一個對象,obj4不受影響。
from:https://blog.csdn.net/weixin_39728230/article/details/80607294