javascript中的運算子用於算表表達式, 比較表達式, 邏輯表達式,賦值表達式等
需要注意的是大多運算子都是標點符號來表示的,例如delete和instanceof.無論是關鍵字運算子或符號運算符,所表示的運算子一樣都是正規運算符,他們的語法都非常言簡意賅。
下標運算子的優先權來排序的,前邊的運算子優先權高於後邊的運算子優先權。被水平華豐隔開的運算子具有不同的優先權。
A表示運算子的結合性。
L由左至右或R(由右至左)
標題N的清單表示操作數的個數。
類型表示期望的操作數的類型,以及運算子的結果類型(在"→"符號之後)
i.操作數的個數
運算子可以透過運算數的個數進行分類。
javascript中的大多數運算子是二元運算符,將兩個表達式合併成一個稍微複雜的表達式。
javascript也支援一些一元運算符,它們將一個表達式轉換為另一個稍微複雜的表達式。表達式-x中的"-"運算子就是一個一元運算子。是將x求負值。
javascript支援一個三元運算子:條件判斷運算子「?:」,它將三個表達式合併為一個表達式
ii.運算子類型與結果型別
一些運算符可以用於任何資料類型,但仍然希望它們操作指定的類型的資料。
iii.左值
在表中的賦值運算子和其它少數運算子期望它們的運算元lval類型,左值是一個古老的術語。它是指「表達式只能出現在賦值運算子的左邊」。 javascript中,變數、物件屬性和陣列元素都是左值。 ECMAScript規格允許範圍內建函數傳回一個左值,但定義的函數則不能傳回左值。
iiii.運算子的優先權
在上表中,所示的運算子是依照優先權從高到低排序的,每個水平分隔線內一組運算符有相同的優先權。運算子優先權優先控制著運算子的執行順序。運算子高的(表頂)的執行總是高於優先順序低的(表格的底部)運算子。
看如下表達式
w=x+y*z;
乘法運算子「*」比加法「+」有更高的優先權,所以乘法先執行。然後,由於賦值運算子“=”具有最低優先權。因此賦值運算是在右側的表達式計算出結果後進行的。
運算子的優先權可以使用園括號來從寫。以上表達式可以這樣寫。
w = (x + y) * z;
要注意的是,屬性存取運算式和呼叫運算式的優先權要比表中的所有運算子都要高。
typeof my.Function[x](y)
儘管typeof是優先權最高的運算子之一,但typeof也是在兩次屬性存取和函數呼叫後執行的。
事實上,如果你真的不確定你所使用的運算子優先級,最簡單的方法就是使用園括號來強行指定運算次序。有些重要的規則則要熟記:乘法和除法高於加減法,賦值運算的優先權非常低,通常是最後執行的。
iiiiii.運算子的結合性
在本節表中,標題為A的列說明了運算子的結核性。 L指由左至右結合,R指由右至左結合。結核性指定了在多個具有相同優先權的運算子表達式中的運算順序。
例如,減法運算依照由左到右的執行結合性。
w = x - y - z
和這段程式碼一樣:
w = ((x - y) - z)
反過來講,下面這個表達式:
x = ~-y; w = x = y = z; q=a?b:c?d:e?f:g;
和這段程式碼一模一樣
x=~(-y); w=(x=(y=z)); q=a?b:(c?d:(e?f:g))
因為一元操作符、賦值和三元條件運算子都具有從右到左的結合性。
iiiiiii.運算順序
運算子的優先順序和結合性規定了它們在賦值的運算式中的運算順序,但並沒有規定字表達式的計算過程中的運算順序。 javascript總是嚴格按照從左到右的順序計算表達式,例如:
在表達式w=x+y*z 中,將首先計算表達式w,然後計算x、y和z,然後,y的值和z相乘,在加上x的值。最後將其表達式w所指涉的變數或屬性。為表達式加入園括號將會改變乘法,加法和賦值運算的關係。但從左到右的順序是不會改變的。
以上是javascript基礎課程之運算子定義用法詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!