📜  JavaScript 中的运算符优先级

📅  最后修改于: 2022-05-13 01:56:43.893000             🧑  作者: Mango

JavaScript 中的运算符优先级

运算符优先级是指在解析具有多个运算符在其中执行操作的语句时赋予运算符的优先级。确保正确的结果以及帮助编译器理解操作的顺序应该是重要的。优先级较高的算子优先解决。但是随着列表的下降,优先级会降低,因此它们的分辨率也会降低。

优先级和关联性:关联性通常表明,无论给定操作的操作数顺序如何,结果都保持不变。优先级用于告诉编译器应该首先执行哪些操作。例如,考虑三个数字 2、3 和 4。现在考虑两个操作:

( 2 + 3 ) + 4 = 2 + ( 3 + 4 )
( 2 >= 3 ) or ( 1 != 4 )

第一个操作是顺序无关紧要的关联性。第二种情况是优先级,为了达到预期的结果,必须有一个正确的操作顺序。

关联性不是一个单一的概念,而处理优先操作必须处理从左到右或从右到左的关联性。这完全取决于操作,并告诉解析器操作应该从哪个方向开始。

例子:

// left-to-right associativity : division 
3/4
// right-to-left associativity : assignment 
a = 3 

运算符优先级表:运算符优先级表可以帮助人们了解一个运算符相对于其他运算符的优先级。随着一个人向下走,这些运算符的优先级相互降低,即一个运算符的优先级低于它上面的运算符,高于它下面的运算符。同一行中的运算符具有相同的优先级。

在此表中,1 是最高优先级,19 是最低优先级。

Precedence OperatorDescriptionAssociativityExample
1()Grouping(1+2)
2.Memberleft to rightobj.function
[]Memberleft to rightobj[“func”]
newCreatenew Date()
()Function callleft to rightfunc()
3++Postfix incrementi++
Postfix decrementi–
4++Prefix incrementright to left++i
Prefix decrement–i
!Logical NOT!TRUE
typeofTypetypeof a
5**Exponentiationright to left4**2
6*Multiplicationleft to right2*3
/Division18/9
%Remainder4%2
7+Additionleft to right2+4
Subtraction4-2
8<< Left shift left to righty<<2
>> Right shifty>>2
>>> Unsigned Right shift y>>>2
9Less thanleft to right3<4
<= Less than or equal3<=4
Greater than4>3
>= Greater than or equal4>=3
inIn“PI” in MATH
instanceofInstance of A instanceof B
10==Equalityleft to rightx==y
!=Inequalityx!=y
===Strictly equalx===y
!==Strictly unequalx!==y
11&Bitwise ANDleft to rightx&y
12^Bitwise XORleft to rightx^y
13|Bitwise ORleft to rightx|y
14&&Logical ANDleft to rightx&&y
15||Logical ORleft to rightx||y
16? :Conditionalright to left(x>y)?x:y
17 Assignmentright to leftx=5
+=x+=3
-=x-=3
*=x*=3
/=x/=3
%=x%=3
<<= x<<=2
>>= x>>=2
>>>= x>>>=2
&=x&=y
^=x^=y
|=x|=y
18yieldPause function right to leftyield x
19,Commaleft to rightx,y