5. JavaScript 運算子 - ZoeHYH/mentor-program-4th GitHub Wiki
語法解析順序
優先性
相同的優先性再考慮相依性。
相依性
左相依性
右相依性
依運算子需要幾個值分類
一元運算子 Unary Operator
二元運算子 Binary Operator
三元運算子 Ternary Operator
依運算子的功能
算數運算子 Arithmetic Operator
+ - * / % //加、減、乘、除、取餘數
遞增 Increment 遞減 Decrement
a++ b-- // a=a+1 b=b-1 的縮寫
++c --d // 先做 e+1 f-1 再執行整句程式
console.log(a++ && 30) // 0 ,先印 a 再 +1
console.log(a) // 1
賦值運算子 Assignment Operator
= // 用來賦與變數值(資料),右相依性,從最後的 = 看起
c+=2 d-=3 // c=c+2 d=d+3 的縮寫
*= /= %=
比較運算子 Comparison Operator
== != // 相等 不相等
> >= < <= // 大於 大於等於 小於 小於等於
=== !=== // 嚴格相等:比較值的型別必須相同
邏輯運算子 Logical Operator
|| && ! // or and not
!true !false // false true
-
短路性質
3 || 10 // 3 0 || 10 // 10 ,0 視為 false 3 && 10 // 10 , 因為後面的值決定了整句的真假 false && 10 // false
位元運算子 Bitwise Operator
位元移動運算子
理論上比較快。
5 >> 1 // 2 ,二進位的位數向右移位等於 /2 無條件捨去
5 << 1 // 10 ,二進位的位數向左移位等於 *2
位元邏輯運算子
對二進位每一位數進行位元運算。
10 & 12 // and
/* 1010
& 1100
= 1000 即 8 */
10 | 12 // or
/* 1010
| 1100
= 1110 即 14 */
10 ^ 12 // Exclusive Or / xor ,同為 0 ,不同為 1
/* 1010
^ 1100
= 0110~12 即 6 */
~10 // not ,每一位數連正負號一起反轉
/* ~ +00...001010
= -11...110101 即 -11 */
-
位元遮罩
a & 1 // 判斷奇偶 a & 8 // 二元第三位數判斷
字串運算子 String Operator
+ //連接字串
"1" + 2 // "12"
特殊運算子 Special Operator
typeof //辨識型別
() //括號裡的運算式優先
delete //刪除物件中的元素
(三元)條件運算子 Conditional Operator
運算式 ? true 時傳送的值 : false 時傳送的值
判斷式 ? if true 時的 Statement
: 判斷式 ? else if true 時的 Statement
: else 時的 Statement
score >= 60 ? 'pass' : 'fail'
逗號運算子 Comma Operator
隔開多個expression
並回傳最後一個expression
的結果。
for(var i=0, j=0; i<10; ++i, j+=2) // ; 隔開了陳述句
sum += i*j;
存取運算子
陣列[序號]
字串[序號]
物件[字串]
物件.字串
展開運算子 Spread Operator
let arr = [1, 2, 3]
let arr2 = [4, 5, 6, ...arr] //把元素傳進去
arr2 // [4, 5, 6, 1, 2, 3]
let obj1 = {a: 1, b: 2}
let obj2 = {...obj1}
obj2 === obj1 // false 記憶體位置不同
-
其餘參數 Rest Parameters
let arr = [1, 2, 3, 4, 5] let [a, ...arr2] = arr console.log(arr2) // [2,3,4,5] function func(a, ...arr){} //其餘參數傳成陣列