大家知道變數的內容是可以被變動,在比較基本型別以及物件型別之後,今天要來介紹的是變數得更新與傳遞。
基本型別:
var a = 5
var b = a
console.log(a) // 5
console.log(b) // 5
上面程式碼可以看到,我們把 a 變數指定給 b,不過當我們去更新了 a 的值, b 的值會改變嗎?
a = 50
console.log(a) //50
console.log(b) //5
答案是不會!
因為 b 的值是透過複製 a 的值, a 的內容是基本型別的話 b 就會建立一個新的值,把 a 的值複製過來,
所以 a 跟 b 都是獨立的一個變數,當 a 的值改成 50 的時候, 變數 b 依舊是 5 沒有受到影響。
這種就叫做 ”傳值“。
物件型別:
var person1 = { name: "Jerry" }
var person1 = person2
console.log(person1) // Jerry
console.log(person2) // Jerry
看起來跟基本型別沒什麼不一樣,不過:
person1.name = "Sid"
console.log(person1.name) // Sid
console.log(person2.name) // Sid
當 person1 更新內容的時候, person2 也會一起被更新,由此可見 person1 和 person2 是一個實體。
不過我們還是來試試看才知道!
console.log( person1 === person2 ) // true
叮咚叮咚! 他們就是同一個人!
所以這種就叫做 ”傳址“。
希望大家可以對於傳值傳址有認識哦~ 明天見啦!!