算數運算符:
加+,減—,乘*,除/,求余%,加加++,減減——,
加減乘除求余運算與數學上的用法完全一樣。
不過,加號+還有連接字符串的作用,其他運算符還可以將字符串數字轉換成數值型,參見JavaScript中數據類型轉換總結中的隱式轉換部分。
++,——分為前置和后置,前置表示在使用該變量之前加/減1,后置表示在使用之后加/減1。
邏輯運算符:
1.&&: 與運算, 當與運算的兩個內容都為true的時候,結果為true,只要有一個內容為false,結果都是false,&& 可以讀作“並且”
2.||: 或運算, 當或運算的兩個內容都為false的時候,結果為false,只要有一個內容為true,結果都是true,|| 可以讀作“或者”
3.!: 非運算, 取反運算,當內容為true時,取反結果為false,當內容為false時,取反結果為true
補充:
&&與||的其他用法
&&
如果兩個操作數都不是布爾類型
且兩個數值轉換成布爾類型都是true,返回第二個操作數
如果有一個操作數轉換成布爾類型是false,返回這個數
var b=undefined&&null
console.log(b);
返回undefined
||
如果兩個操作數都不是布爾類型
第一個數轉換成布爾類型為true,則不往下看,返回第一個數
如果第二個數轉換成布爾類型為true,則返回第二個數值。
比較運算符:
>, <, >= ,<=, == ,!=,===,!==
>, <, >= ,<=和數學里表示的含義完全一樣。下面四個運算符剛開始接觸會有點迷惑。
== 相等操作符
如果兩個操作數相等,則返回 true。
!= 不相等操作符
如果兩個操作數不相等,則返回 true。
這兩個操作符都會先轉換操作數(通常稱為強制轉型),然后再比較它們的相等性。在轉換不同的數據類型時,相等和不相等操作符遵循下列基本規則:
1、 如果有一個操作數是布爾值,則在比較相等性之前先將其轉換為數值——false 轉換為 0,而true 轉換為 1;
2、如果一個操作數是字符串,另一個操作數是數值,在比較相等性之前先將字符串轉換為數值;
3、 如果一個操作數是對象,另一個操作數不是,則調用對象的 valueOf()方法,用得到的基本類型值按照前面的規則進行比較;
這兩個操作符在進行比較時則要遵循下列規則。
1、 null 和 undefined 是相等的。
2、 要比較相等性之前,不能將 null 和 undefined 轉換成其他任何值。
3、 如果有一個操作數是 NaN,則相等操作符返回 false,而不相等操作符返回 true。重要提示:
即使兩個操作數都是 NaN,相等操作符也返回 false;因為按照規則, NaN 不等於 NaN。
如果兩個操作數都是對象,則比較它們是不是同一個對象。如果兩個操作數都指向同一個對象,
則相等操作符返回 true;否則,返回 false。
下表列出了一些特殊情況及比較結果:
| 表 達 式 值 |
表 達 式 值 |
| null == undefined true |
true == 1 true |
=== 全等操作符
在兩個操作數未經轉換就相等的情況下返回 true。即數值和類型都相同。
var result1 = ("55" == 55); //true,因為轉換后相等
var result2 = ("55" === 55); //false,因為不同的數據類型不相等
!== 不全等操作符
在兩個操作數未經轉換就不相等的情況下返回 true。數據類型不同就不等。
var result1 = ("55" != 55); //false,因為轉換后相等
var result2 = ("55" !== 55); //true,因為不同的數據類型不相等
賦值運算符:
=,+=,-=,*=,/=
簡單的賦值操作符由等於號(=)表示,其作用就是把右側的值賦給左側的變量。
如果在等於號(=)前面再添加乘性操作符、加性操作符或位操作符,就可以完成復合賦值操作。
num = num + 10; 等同於num += 10;
設計這些操作符的主要目的就是簡化賦值操作。使用它們不會帶來任何性能的提升。
三元運算符:
? :
舉個例子:
var max = (num1 > num2) ? num1 : num2;
在這個例子中, max 中將會保存一個最大的值。這個表達式的意思是:如果 num1 大於 num2(關系表達式返回 true),則將 num1 的值賦給 max;如果 num1 小於或等於 num2(關系表達式返回 false),則將 num2 的值賦給 max。
位運算符:
JavaScript也有位運算符,需要先轉換成16進制數進行運算,在開發中好像還沒有用到過,了解一下即可。
JavaScript中運算符優先級
| 優先級 |
運算類型 |
關聯性 |
運算符 |
| 20 |
n/a |
( … ) |
|
| 19 |
從左到右 |
… . … |
|
| 從左到右 |
… [ … ] |
||
| new (帶參數列表) |
n/a |
new … ( … ) |
|
| 從左到右 |
… ( … ) |
||
| 18 |
new (無參數列表) |
從右到左 |
new … |
| 17 |
后置遞增(運算符在后) |
n/a |
… ++ |
| 后置遞減(運算符在后) |
n/a |
… -- |
|
| 16 |
從右到左 |
! … |
|
| 從右到左 |
~ … |
||
| 從右到左 |
+ … |
||
| 從右到左 |
- … |
||
| 從右到左 |
++ … |
||
| 從右到左 |
-- … |
||
| 從右到左 |
typeof … |
||
| 從右到左 |
void … |
||
| 從右到左 |
delete … |
||
| 15 |
從右到左 |
… ** … |
|
| 14 |
從左到右 |
… * … |
|
| 從左到右 |
… / … |
||
| 從左到右 |
… % … |
||
| 13 |
從左到右 |
… + … |
|
| 從左到右 |
… - … |
||
| 12 |
從左到右 |
… << … |
|
| 從左到右 |
… >> … |
||
| 從左到右 |
… >>> … |
||
| 11 |
從左到右 |
… < … |
|
| 從左到右 |
… <= … |
||
| 從左到右 |
… > … |
||
| 從左到右 |
… >= … |
||
| 從左到右 |
… in … |
||
| 從左到右 |
… instanceof … |
||
| 10 |
從左到右 |
… == … |
|
| 從左到右 |
… != … |
||
| 從左到右 |
… === … |
||
| 從左到右 |
… !== … |
||
| 9 |
從左到右 |
… & … |
|
| 8 |
從左到右 |
… ^ … |
|
| 7 |
從左到右 |
… | … |
|
| 6 |
從左到右 |
… && … |
|
| 5 |
從左到右 |
… || … |
|
| 4 |
從右到左 |
… ? … : … |
|
| 3 |
從右到左 |
… = … |
|
| … += … |
|||
| … -= … |
|||
| … *= … |
|||
| … /= … |
|||
| … %= … |
|||
| … <<= … |
|||
| … >>= … |
|||
| … >>>= … |
|||
| … &= … |
|||
| … ^= … |
|||
| … |= … |
|||
| 2 |
從右到左 |
yield … |
|
| 從右到左 |
yield* … |
||
| 1 |
n/a |
... … |
|
| 0 |
從左到右 |
… , … |
