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()方法后再应用上述规则。对象变量变成数值变量。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • C++运算符重载-上篇 本章内容:1. 运算符重载的概述2. 重载算术运算符3. 重载按位运算符和二元逻辑运算符4...
    Haley_2013阅读 6,809评论 0 51
  • 表达式和运算符 程序中最简单的表达式就是,程序中的常量 变量名也是一种简单的表达式 复杂的表达式是由简单的表达式组...
    zhaolion阅读 5,572评论 3 12
  • 表达式 表达式是由数字、运算符、数字分组符号(如括号)、自由变量和约束变量等以能求得数值的有意义排列方法所得的组合...
    劼哥stone阅读 3,663评论 0 4
  • 23日孩子白天还好,晚上又反复发烧,烧到39.4,衣服、床单、被单都湿了,赶紧给换掉,一夜又无眠,当妈的不容易啊!...
    漳州宸妈阅读 3,038评论 0 0
  • 从我出生,到读书到嫁人,我就没有离开过我的爸爸妈妈,小学时学校在家的左边,初中时学校在家的右边,高中后,学校在家的...
    女王大人_阅读 4,136评论 0 2