文档章节

运算符优先级

开卷书生
 开卷书生
发布于 2014/12/08 11:24
字数 613
阅读 37
收藏 2

概述

运算符的优先级决定了表达式中运算执行的先后顺序,优先级高的运算符最先被执行.

下面是一个简单的例子:

3 + 4 * 5 // 计算结果为23

 
 
 
 

  
  

乘法运算符 ("*")比起加法运算符("+")有着更高的优先级,所以它会被最先执行.

关联性

关联性决定了拥有相同优先级的运算符的执行顺序.考虑下面这个表达式:

a OP b OP c

 
 
 
 

  
  

左关联(从左到右计算)相当于把左边的子表达式加上小括号(a OP b) OP c,类似的,右关联(从右到左计算)相当于a OP (b OP c).赋值运算符是右关联的,所以你可以这么写:

a = b = 5;

 
 
 
 

  
  

结果a和b的值都会成为5.这是因为赋值运算符的返回结果就是赋值运算符右边的那个值,具体过程是:b被赋值为5,然后a也被赋值为b=5的返回值,也就是5.

汇总表

下面的表将所有运算符按照优先级的不同从高到低排列.

优先级 运算类型 关联性 运算符
1 成员运算符 从左到右 .
[]
new 从右到左 new
2 函数调用运算符 从左到右 ()
3 自增运算符 n/a ++
自减运算符 n/a --
4 逻辑非运算符 从右到左 !
按位非运算符 从右到左 ~
一元加运算符 从右到左 +
一元减运算符 从右到左 -
typeof 从右到左 typeof
void 从右到左 void
delete 从右到左 delete
5 乘法运算符 从左到右 *
除法运算符 从左到右 /
取模运算符 从左到右 %
6 加法运算符 从左到右 +
减法运算符 从左到右 -
7 位移运算符 从左到右 <<
>>
>>>
8 关系运算符 从左到右 <
<=
>
>=
in 从左到右 in
instanceof 从左到右 instanceof
9 相等运算符 从左到右 ==
!=
===
!==
10 按位与运算符 从左到右 &
11 按位异或运算符 从左到右 ^
12 按位或运算符 从左到右 |
13 逻辑与运算符 从左到右 &&
14 逻辑或运算符 从左到右 ||
15 条件运算符 从右到左 ?:
16 yield 从右到左 yield
17 赋值运算符 从右到左 =
+=
-=
*=
/=
%=
<<=
>>=
>>>=
&=
^=
|=
18 逗号运算符 从左到右 ,

本文转载自:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Operators/Operator_Precedence

开卷书生
粉丝 2
博文 98
码字总数 2024
作品 0
广州
私信 提问
C优先级的口诀

学习C语言也有一段时间了,感觉C语言的运算符优先级很难记住,特别是对于初学者而言! 也许你会说没有记住没关系,用括号来改变优先级就可以了。但是很多情况下,因为依赖括号很容易导致程序...

长平狐
2012/09/03
135
0
c++中的运算符优先级

C++ 中的运算符优先级 运算符的优先级确定表达式中项的组合。这会影响到一个表达式如何计算。某些运算符比其他运算符有更高的优先级,例如,乘除运算符具有比加减运算符更高的优先级。 例如 ...

shenhuan1104
2017/09/12
0
0
c运算符和优先级

计算机等级考试 C语言运算符的“优先级口决” C语言运算符的“优先级口决” 希望对初学C语言语言的朋友有所帮助; 当然,应用这个口诀的前提是你必须认识所有的C语言的运算符。 优先级口诀 括...

zhaozhiliang521
2017/02/08
0
0
javascript运算符语法概述

操作数个数   javascript的运算符总共有46个,如果根据其操作数的个数进行分类,则大多数是二元运算符(binary operator),它们的操作数都是两个,它们将两个表达式合并成复杂表达式 1 + 2;...

jjjssswww
2017/06/06
0
0
学习笔记:逻辑运算符也有优先级区别

不尝试还真不知道,居然是因为优先级的差别导致,如果是真实编程中遇到,排错就很困难了,幸亏这里看到了: $a = true; //声明一个布尔型变量$a,赋值为真$b = true; //声明一个布尔型变量$...

七彩极
2018/07/02
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Qt编写数据可视化大屏界面电子看板9-曲线效果

一、前言 为了编写数据可视化大屏界面电子看板系统,为了能够兼容Qt4和嵌入式linux系统,尤其是那种主频很低的,但是老板又需要在这种硬件上(比如树莓派、香橙派、全志H3、imx6)展示这么华...

飞扬青云
7分钟前
0
0
责任链模式

//这篇博客的博主真的不错,解析的都很清晰明了, https://blog.csdn.net/jason0539/article/details/45091639

南桥北木
33分钟前
2
0
Flutter -------- dio网络请求

dio是Flutter中文网开源的一个强大的Dart Http请求库,支持Restful API、FormData、拦截器、请求取消、Cookie管理、文件上传/下载、超时等... 1.添加依赖# dependencies: dio: 2.1.x #...

切切歆语
43分钟前
1
0
PHP的学习

PHP变量的命名必须以$符开始,如: $i;$j;$name; $符后面的第一个字符不可以是数字,只能是字母或者下划线(_)。 除了下划线(_)之外,变量中不能出现任何特殊字符,也就是变量只能包含...

墨冥
今天
2
0
一篇文章彻底搞懂Java虚拟机

概念: 虚拟机:指以软件的方式模拟具有完整硬件系统功能、运行在一个完全隔离环境中的完整计算机系统 ,是物理机的软件实现。常用的虚拟机有VMWare,Visual Box,Java Virtual Machine(Jav...

骚年锦时
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部