1. 程式人生 > 程式設計 >JS運算子優先順序與表示式示例詳解

JS運算子優先順序與表示式示例詳解

前言

運算子優先順序決定了表示式中運算執行的先後順序,優先順序越高的運算子會先執行。

運算子優先順序

JS運算子優先順序與表示式示例詳解

很多時候由於對運算子優先順序的不確定,會用括號來確保表示式的執行順序。如果搞清楚運算子的優先順序,即使不用括號也能確保表示式按照正確的順序執行。

其實單純靠運算子的優先順序來確定表示式的執行過程並不是一個絕對穩妥的做法,比如 new a()['b'] 這樣的表示式就沒法套用運算子優先順序。當然一般情況下,絕大多數表示式我們都可以利用運算子優先順序來判斷,如果確實遇到比較複雜的難以直觀判斷出來的情況還是要查詢 ECMAScript262 標準中的產生式。

表示式

左手錶達式

左手錶達式即 Left-Hand-Side Expression,即能出現在賦值運算左邊的表示式。幾乎所有的左手錶達式都可以作為右手錶達式,這在大部分程式語言中都是通用的。JS 中的左手錶達式的詳細規則請看ECMAScript262-left-hand-side expression。標準中沒有定義右手錶達式,因為合法的表示式只要不是左手錶達式就是右手錶達式,所以不需要在單獨定義。有一點需要注意的是 ++ 和 -- 的運算元也要是一個左手錶達式。

一些細節

  1. 關聯性和優先順序一樣重要,關聯性決定了擁有相同優先順序的運算子的執行順序。
  2. 優先順序為 19 的除了圖中 member運算、帶引數new ,還有帶標籤的模版字串(可以理解為和函式呼叫類似),new.target,super作為物件使用(和成員訪問相同)
  3. 函式呼叫的優先順序在圖中也是 19,但實際似乎優先順序是要低於 member運算 和單引數 new 運算子的。當函式呼叫後接 member 運算子整個式子還是函式呼叫等級的。
  4. 一元加、一元減和算術運算子的加減是不同的,一元加和一元減都會講運算元轉為 Number,這也是它可以將函式宣告轉為函式表示式的原因。

總結

到此這篇關於JS運算子優先順序與表示式的文章就介紹到這了,更多相關JS運算子優先順序與表示式內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!