iT邦幫忙

2024 iThome 鐵人賽

DAY 14
0
JavaScript

30天享用JavaScript概念三明治系列 第 14

Day14:「+」加法運算子

  • 分享至 

  • xImage
  •  

+加法運算子 (P2-28)

  • 都是數值型別時,用法和數學符號的加號相同。
let a = 1 + 1;
console.log(a); // 2

但相乘就不一樣,相乘是為了做"數學運算"使用的,所以它會先轉成"數字"再做相乘

let A = "1" * "1";
console.log(A); // 1

數值型別與字串相加

  • 如果不全是數值型別,會觸發「強制轉型」(Coercion)。

當使用加法運算子("+")時,只要有一個字串出現,就會將其餘的部分一併轉為"字串"再做運算
所以 1 + "1" 會等於 "11",也就是兩個字串會合併。

let b = 1 + "1";
console.log(b); // 11

let c = "1" + "1";
console.log(c); // 11

let d = 1 + "2" + 3;
console.log(d); // 123

數值與undefined相加

  • 一起運算的兩個值,其一因為資料處理發生狀況變成undefined時,JavaScript會嘗試將它轉為數值型別。
  • 由於undefined無法轉成數值,因此會得到NaN(Not-a-Number)的結果。
  • NaN與任何數值型別的值運算都會得到NaN的結果。
let e = 1 + undefined;
console.log(e); // NaN

數值與物件相加

  • 當數值與物件相加時,JavaScript會嘗試先將物件轉字串。
  • 一般的物件被轉型時不會顯示完整的物件細節,只會得到“[object Object]”字串。(JavaScript的預設行為)
  • 物件被轉字串後,運算式便以數值與字串相加的方式作運算。
/*複習一下,用大括號{}宣告一個物件*/

let f = 1 + {}; 
console.log(f); // "1[object Object]"
  • 如果是物件屬性被轉型時,會發生什麼事?
const dog = {
    color:"white",
    age : 2
}

let g = 1 + dog; 
console.log(g); // "1[object Object]"

/*
複習一下,物件屬性的存取(用小數點.或中括號[])。
以及,所以物件的屬性名都是字串型別。
*/
let h = 1 + dog.color; // 用小數點
let i = 1 + dog.["age"]; // 用中括號
console.log(h); // "1white"
console.log(i); // 3

參考資料:
JavaScript - 字串型別與轉換


上一篇
Day13:積木鴨子=參賽第十三天心得
下一篇
Day15:「-」減法運算子
系列文
30天享用JavaScript概念三明治30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言