運算子(Operator)
在程式設計中,運算子是用來對資料進行運算、比較、邏輯判斷等操作的符號。
常見的包括生活中常用的加減乘除、比較大小、邏輯運算等。在 JavaScript 中,運算子種類繁多,以下是一些常見的運算子及其用法。
1. 算術運算子
用於數值的加減乘除與取餘數。
| 運算子 | 說明 | 範例 | 結果 |
|---|---|---|---|
+ | 加法 | 1 + 2 | 3 |
- | 減法 | 5 - 3 | 2 |
* | 乘法 | 2 * 3 | 6 |
/ | 除法 | 6 / 2 | 3 |
% | 取餘數 | 7 % 3 | 1 |
** | 次方 | 2 ** 3 | 8 |
javascript
let a = 10;
let b = 3;
console.log(a + b); // 13
console.log(a % b); // 12. 指派運算子
用來給變數賦值,或在原有基礎上進行運算。
| 運算子 | 說明 | 範例 | 結果 | 等價 |
|---|---|---|---|---|
= | 賦值 | a = 5 | 5 | |
+= | 加後賦值 | a += 2 | 7 | a = a + 2 |
-= | 減後賦值 | a -= 1 | 6 | a = a - 1 |
*= | 乘後賦值 | a *= 3 | 18 | a = a * 3 |
/= | 除後賦值 | a /= 2 | 9 | a = a / 2 |
%= | 餘數後賦值 | a %= 4 | 1 | a = a % 4 |
3. 比較運算子
用來比較兩個值,結果會回傳布林值(true/false)。
| 運算子 | 說明 | 範例 | 結果 |
|---|---|---|---|
== | 等於 | 3 == '3' | true |
=== | 全等 | 3 === '3' | false |
!= | 不等於 | 5 != 3 | true |
!== | 全不等 | 5 !== '5' | true |
> | 大於 | 5 > 2 | true |
< | 小於 | 1 < 2 | true |
>= | 大於等於 | 3 >= 3 | true |
<= | 小於等於 | 2 <= 1 | false |
這邊要特別注意,由於 JavaScript 是動態型別語言,在其他語言中 3 == '3' 會被視為不相等,但在 JavaScript 中,它會幫你自動轉型,所以會被視為相等。
但這樣會造成早期一些程式的判斷錯誤與混淆,因此後來出現了 === 運算子,意義是指除了值相等外,型別也必須相同。
所以像是 3 === '3' 會被因為數字3與字串'3'型別不同而被視為不相等。
TIP
JavaScript 是 Brendan Eich 在 1995 年僅用10天時間開發出來的語言,有很多設計上的妥協與不妥善之處。但因為它的泛用性,所以直到現在仍然被廣泛使用。
4. 邏輯運算子
用於多個條件的邏輯判斷。
| 運算子 | 說明 | 範例 | 結果 |
|---|---|---|---|
&& | 且(AND): 左右兩側皆為 true 則 true | true && false | false |
|| | 或(OR): 左右任一側為 true 則 true | true || false | true |
! | 非(NOT): 反轉結果,true 則 false, false 則 true | !true | false |
^ | XOR(異或): 兩側不同則 true,相同則 false | true ^ false | true |
5. 其他常見運算子
三元運算子(條件運算子)
語法:條件 ? 值1 : 值2 或條件為真則返回值1,否則返回值2。
javascript
let age = 18;
let result = (age >= 18) ? '成年' : '未成年';
console.log(result); // "成年"斷路運算子(Short-circuit evaluation)
在使用 && 和 || 時,如果左側已經能決定結果,則右側不會被執行。
javascript
let age = 18;
// 若 && 左側的條件為 true, 則會執行右側的程式碼
// 若 && 左側的條件為 false, 則右側不會被執行
age >= 18 && console.log('成年'); // 如果 age >= 18 才會印出 "成年",否則什麼都不做
// 若 || 左側的條件為 true, 則右側不會被執行
// 若 || 左側的條件為 false, 則會執行右側
age < 18 || console.log('已成年'); // 如果 age >= 18 才會印出 "已成年",否則什麼都不做typeof 運算子
用來取得變數的型別。
javascript
console.log(typeof 123); // "number"
console.log(typeof 'hi'); // "string"6. 位元運算子(進階)
位元運算子用於二進位的運算,較少在一般開發中使用。暫時先不深入。
| 運算子 | 說明 |
|---|---|
& | AND |
| | OR |
^ | XOR |
~ | NOT |
<< | 左移 |
>> | 右移 |
小結
JavaScript 的運算子種類豐富,建議多加練習與實作,熟悉各種運算子的用法,能讓你寫出更靈活、強大的程式!
