JS變量賦值


一、基本數據類型: 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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM