JavaScript基礎之運算子及全面的運算子優先順序總結

來源:互聯網
上載者:User

標籤: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基礎之運算子及全面的運算子優先順序總結

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.