JS里各种运算符计算先后顺序总结

优先级排序从上到下


()(圆括号)


.(成员访问)

[]   (需计算的成员访问) 

new (带参数列表)


foo()  (函数调用)

new  (无参数列表)


a++(后置递增操作符)

a-- (后置递减操作符)


(逻辑非)

(按位非)

(一元加操作符)  

-   (一元减操作符)

++a(前置递增操作符)

--a(前置递减操作符)

typeof (判断基本类型)

void (对给定的表达式进行求值,然后返回uundefined)

delete (删除对象的某个属性)


**  (幂运算)

*   (乘法)

/    (除法)

% (取模)


(加法)

-   (减法)


<<  (按位左移)

 >>  (按位右移)

 >>> (无符号右移)


<  (小于)

>  (小于等于)

<=   (大于)

>=   (大于等于)

in  (指定的属性存在于指定的对象中,则in运算符会返回true)

instanceof   (判断引用类型)


==  (等号) 

!=  (非等号) 

===   (全等)

!==  (非全等)


&  (按位与)


^    (按位异或)


|    (按位或)


&&  (逻辑与)


||   (逻辑或)


?   :   (条件运算符,三目运算符)


=

+=

-=

*=

/=

%=

<<=

>>=

>>>=

&=

^=

|=       (赋值)


yield  (用来暂停和恢复一个生成器函数)

yield*  (可以把需要yield的值委托给另外一个生成器或者其他任意的可迭代对象。)


...   (展开运算符)


  (逗号)


PS

递增递减操作符与一元加减操作对任何值都适用。

对于String类型的数据,会先进行Number()操作,将它变成数字值,在进行加一减一操作,如果String为'abc'这种,则返回NaN。如果为'1',这返回数字1。

如果是布尔值,false转换为0,true转换为1。

如果是对象,将会先进行valueof()方法,以取到一个可用来操作的值,然后对该值进行上述的操作,如果结果是NaN,则调用toString()方法后再应用上述规则。对象变量变成数值变量。

你可能感兴趣的:(JS里各种运算符计算先后顺序总结)