JavaScript 01

JavaScript 01

Type Coercion

在 JavaScript 中操做 operator 的四則運算時,會強制將某種型別轉換成另外一種型別。

  • -, * , / , % ,會將不是數字的 operand 轉換成 number
25 * false; // 0
5 - '1'; //4
  • + 會優先將 operand 轉換成 string,再來才是 number
5 + "1" // "51"

Truthiness : 在 statement 中的條件判斷也會將裡面的值轉換成 true/false

const i = 10;
if (i) {
  console.log('It is true');
}

大部分的值在 JS 裡面都是 truthy,除了以下七種值為 falsy

  • false

  • 0

  • -0

  • NaN

  • ""

  • null

  • undefined

但要特別注意的是,不能用上述方法來判斷變數是否有被 assigned,請見下例

// 判斷變數 i 是否有被 assigned 過,如果沒有的話,就給它一個值。
let i;
i = 0;

if (!i) {
  i = 20;
}
console.log(i); // 20

i 明明有被 assinged 為 0,卻因為 0 被判斷成 falsy 而判斷錯誤。

let i;
i = 0;

if (typeof i === 'undefined') {
  i = 20;
}
console.log(i); // 0

利用 typeof 才能真正判斷此變數是否有被 assigned。

Reference