標籤:developer main 邏輯或 串連 除法 ++ 另一個 不能 group
算數運算子:
加+,減—,乘*,除/,求餘%,加加++,減減——,
加減乘除求餘運算與數學上的用法完全一樣。
不過,加號+還有連接字串的作用,其他運算子還可以將字串數字轉換成數值型,參見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 "NaN" == NaN false 5 == NaN false NaN == NaN false NaN != NaN true false == 0 true |
true == 1 true true == 2 false undefined == 0 false null == 0 false "5"==5 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 |
從右至左 |
typeof … |
void |
從右至左 |
void … |
delete |
從右至左 |
delete … |
15 |
冪 |
從右至左 |
… ** … |
14 |
乘法 |
從左至右 |
… * … |
除法 |
從左至右 |
… / … |
模數 |
從左至右 |
… % … |
13 |
加法 |
從左至右 |
… + … |
減法 |
從左至右 |
… - … |
12 |
按位左移 |
從左至右 |
… << … |
按位右移 |
從左至右 |
… >> … |
無符號右移 |
從左至右 |
… >>> … |
11 |
小於 |
從左至右 |
… < … |
小於等於 |
從左至右 |
… <= … |
大於 |
從左至右 |
… > … |
大於等於 |
從左至右 |
… >= … |
in |
從左至右 |
… in … |
instanceof |
從左至右 |
… instanceof … |
10 |
等號 |
從左至右 |
… == … |
非等號 |
從左至右 |
… != … |
全等號 |
從左至右 |
… === … |
非全等號 |
從左至右 |
… !== … |
9 |
按位與 |
從左至右 |
… & … |
8 |
按位異或 |
從左至右 |
… ^ … |
7 |
按位或 |
從左至右 |
… | … |
6 |
邏輯與 |
從左至右 |
… && … |
5 |
邏輯或 |
從左至右 |
… || … |
4 |
條件運算子 |
從右至左 |
… ? … : … |
3 |
賦值 |
從右至左 |
… = … |
… += … |
… -= … |
… *= … |
… /= … |
… %= … |
… <<= … |
… >>= … |
… >>>= … |
… &= … |
… ^= … |
… |= … |
2 |
yield |
從右至左 |
yield … |
yield* |
從右至左 |
yield* … |
1 |
展開運算子 |
n/a |
... … |
0 |
逗號 |
從左至右 |
… , … |
JavaScript基礎之運算子及全面的運算子優先順序總結