今天要來認識運算子,了解一下怎們運用JS語法來執行各種類型的運算。
當我們需要測試或定義變數之間的運算或關係時,會運用運算子來組成類似數學運算公式的方式來執行,大致上可以分為以下幾種:
算數運算子 - 數學運算符號
let x = 2
let y = 3
console.log(x + y) // 5
console.log(x - y) // -1
console.log(x * y) // 6
console.log(x / y) // 0.666666....
console.log(x % y) // 2 x / y的餘數
console.log(x ** y) // 8 x的y次方
這邊額外拉出來說明比較特別的 ++
及 --
,在JS中表達的意思是遞增及遞減,放置於變數前或後都是表達將變數加或減1,然而隨著放置位置的不同也會產生些微不同的效果
let x = 5
console.log(x) // 5
console.log(x++) // 5
console.log(x) // 6
console.log(++x) // 7
從上面的例子可以知道,當 ++
放在x後面輸出時,會先回傳x值再進行後面運算,而 ++
放在x前面輸出時,則會先進行運算再回傳x值,同理 x--
及 --x
也是一樣的狀況,所以在使用上需要特別注意到這個小細節。
賦值運算子 - 賦值搭配算術運算
let x = 2
let y = 3
console.log(x += y) // x = x + y = 5
console.log(x -= y) // x = x - y = 2
console.log(x *= y) // x = x * y = 6
console.log(x /= y) // x = x / y = 0.6666...
console.log(x %= y) // x = x % y = 2
比較運算子 - 針對前後值進行比較(會得到布林值)
let x = 2
let y = 3
console.log(x === y) // false
console.log(x !== y) // true
console.log(x > y) // false
console.log(x >= y) // false
console.log(x < y) // true
console.log(x <= y) // true
需要特別注意,比較兩值相等或不相等時,必須使用嚴格的等於及不等於( ===
和!==
),假如使用較為寬鬆的等於及不等於( ==
和 !=
) JS不會特別判斷兩邊資料型別是否不同,進而產生許多錯誤或失控的狀況。
邏輯運算子 - 判斷邏輯上的”且”、”或”及”反”運算
let x = 2
let y = 3
console.log((x < y) && (x !== y)) // true 必須兩邊都成立才會回傳true
console.log((x > y) || (x !== y)) // true 只要有一邊成立便會回傳true
console.log(!(x < y)) // true 回傳x < y (false)的相反結果
JS的 ()
和數學運算一樣具備優先序考量,當某一個區塊的程式碼需要優先執行時,便可以用 ()
將之包裹起來,以告知程式這個部分的優先序較高,必須先進行判斷及執行。