Skip to main content

Expressions & Operators

我這邊挑著講一些, 完整內容可以上MDN doc詳讀。

Operators

Operators 中文稱作「運算子」,簡單來說就是像加減乘除那樣的運算符號。不過程式語言中經常不只有加減乘除而有很多花樣,我這邊挑一些介紹。

Arithmetic Operators

console.log(3 + 2); // 5
console.log(3 - 2); // 1
console.log(3 * 2); // 6
console.log(3 / 2); // 1.5
console.log(3 % 2); // 1, because 3/2 = 1...*1*

Logical Operators

  • Logical OR (||)
  • Logical AND (&&)
  • Nullish coalescing (?? 這我不常用,但好像其實挺方便的)
  • Not (!)
console.log(true || false); // true (at least 1 true => true)
console.log(true && false); // false (all true => true)
console.log(null??1); // 1 (if lhs is null or undefined, return rhs)
console.log(!false); // true, not false => true
info

可以注意到邏輯運算的最終結果常常是 boolean,這件事情之後會用到。

Comparison Operators

比較運算子裡面有分兩種:不嚴格(strict)跟嚴格

non-strict

只考慮 operand,不考慮 type。

console.log('1' == 1); // true
console.log('1' != 1); // false
console.log('1' >= 1); // true
console.log('1' > 1); // false
console.log('1' <= 1); // true
console.log('1' < 1); // false

strict

考慮 operand 又考慮 type

console.log('1' === 1); // false
console.log('1' !== 1); // true
info

可以注意到比較運算的最終結果常常是 boolean,這件事情之後會用到。

String Operators

在 JS 中,合併字串可以直接透過 + 完成:

console.log("Hello" + " " + "World") // Hello World

Unary Operators

也就是說這些運算符只有一邊有值:

let n = 5; // this is assignment operator, just initialize here

// Pretty useful in loops, which we'll discuss later
n++; // plus 1
console.log(n); // 6
n--; // minus 1
console.log(n); // 5

typeof n; // number

Assignment Operators

let n = 5
n += 1; // equals to n = n + 1
n -= 1; // equals to n = n - 1
n *= 2; // equals to n = n * 2
n /= 2; // equals to n = n / 2
n %= 2; // equals to n = n % 2

Grouping

可以像數學運算那樣用 () 分群:

console.log((3 + 2) * (5 + 1)); // 30