iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 12
0
自我挑戰組

JavaScript基礎介紹 for 30天系列 第 12

第十二天 JavaScript 到底是傳值還是傳址(下)

  • 分享至 

  • xImage
  •  

大家知道變數的內容是可以被變動,在比較基本型別以及物件型別之後,今天要來介紹的是變數得更新與傳遞。

變數更新和傳遞

基本型別:

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

叮咚叮咚! 他們就是同一個人!
所以這種就叫做 ”傳址“。

希望大家可以對於傳值傳址有認識哦~ 明天見啦!!


上一篇
第十一天 JavaScript 到底是傳值還是傳址(上)
下一篇
第十三天 JavaScript 物件模型 BOM
系列文
JavaScript基礎介紹 for 30天24
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言