javascript中的運算符大多由标點符号表示,少數由關鍵字表示,它們的文法言簡意赅,它們的數量卻着實不少。運算符始終都遵循着一些固定文法,隻有了解并掌握這些内容,才能正确使用運算符。本文将主要介紹javascript運算符文法概述
javascript的運算符總共有46個,如果根據其操作數的個數進行分類,則大多數是二進制運算符(binary operator),它們的操作數都是兩個,它們将兩個表達式合并成複雜表達式
javascript中的一進制運算符(unary operator)将一個表達式轉換為另一個稍複雜的表達式,主要包括以下9個:
javascript隻有一個三元運算符(ternary operator),是條件判斷運算符?:,它将三個表達式合并成一個表達式
運算符優先級控制着運算符的執行順序,優先級高的運算符的執行總是先于優先級運算符低的運算符
46個運算符總共分為14級的優先級,從高到低依次是:
由這14級的運算符優先級等級可以看出:
[注意]邏輯取反運算符屬于一進制運算符,其優先級最高
例子
像上面這種情況就比較複雜,逐漸來分解其運算順序
先計算一進制運算符!,!2;//false
計算算術運算符4*3+1;//13
計算比較運算符<,false<1;//true
可以使用圓括号來強行指定運算次序
運算符具有兩種結合性,一種是從左向右結合,記号為L,一種是從右向左結合,記号為R。結合性指定了在多個具有同樣優先級的運算符表達式中的運算順序
多數運算符都具有從左向右的結合性,隻有一進制運算符、條件運算符和指派運算符具有從右向左的結合性
運算符的優先級和結合性決定了它們在複雜表達式中的運算順序,但子表達式互相有影響時,順序會發生變化
先分析該表達式中,根據優先級的順序,分别運算遞增運算符、乘法運算符、加法運算符和指派運算符
先計算第一個a++;//結果為1,a為2
計算a--;//結果為2,a為1
計算第二個a++;//結果為1,a為2
是以,最終a = 2; b = 3;
一些運算符可以作用于任何資料類型,但仍然希望它們的操作數是指定類型的資料,并且大多數運算符傳回一個特定類型的值,在下面的運算符規則表中,箭頭前為運算符操作數的類型,箭頭後為運算結果的類型
【左值】
左值(lvalue)是一個古老的術語,指表達式隻能出現在運算符的左側
在javascript中,變量、對象屬性和數組元素都是左值
遞增運算符++、遞減運算符--和指派運算符的操作數類型是左值