iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 11
1
自我挑戰組

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

第十一天 JavaScript 到底是傳值還是傳址(上)

  • 分享至 

  • xImage
  •  

前面十天我們講 JavaScript 可以分成基本型別以及物件型別,基本型別裡面的資料會以值存在像是 String, number, boolean, null, undefined ,物件的話可能有多種不同的型別(含值或物件)組成的物件。

假設指定兩個變數為 5

var a = 5
var b = 5

console.log( a === b) // true

基本型別會認為這兩個是一樣的。

var a = "Jerry"
var b = "Jerry"

console.log( a === b) //true 

字串也是

而物件型別的比較就會有稍稍不一樣了,下面範例中宣告兩個擁有 value 的物件:

var obj1 = { value : 5 };
var obj2 = { value : 5 };

console.log( obj1 === obj2 ); // false

是不是覺得很錯愕?
JavaScript 的世界裡面,物件都會被當一個實體。假設今天有兩個同名同姓的人出現,但是實際上他們不是同一個人,對吧!

以物件為實體的前提下,如果我在其中一個同名同姓的人身上畫了一隻皮卡丘(我就喜歡皮卡丘),那另外一個人肯定不會有我畫的皮卡丘:

var person1 = { name : "Jerry" };
var person2 = { name : "Jerry" };
console.log( person1 === person2 ) // false

// 我在 person1 身上畫了一個皮卡丘
person1.pikachu = true;

// person2 肯定不會有皮卡丘
console.log(person2.pikachu) // undefined

今天就先介紹到這邊啦,敬請期待下集 XD 明天見啦~


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

尚未有邦友留言

立即登入留言