JavaScript基礎之運算符及全面的運算符優先級總結


算數運算符:

+,減—,乘*,除/,求余%,加加++,減減——,

加減乘除求余運算與數學上的用法完全一樣。

不過,加號+還有連接字符串的作用,其他運算符還可以將字符串數字轉換成數值型,參見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

逗號

從左到右

… , …


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM