文章目录
- 一、JavaScript 运算符优先级
- 1、运算符优先级 概念
- 2、运算符优先级 列举
- 3、运算符示例
一、JavaScript 运算符优先级
1、运算符优先级 概念
JavaScript 的 运算符 是有 " 优先级 " 的 , " 运算符优先级 " 决定 一个表达式中 多个 运算符的 执行顺序 ;
一个 表达式 中 , 有多个运算符 , " 运算符优先级 " 决定了 哪个 运算符 首先与操作数结合 ;
- 运算符优先级不同 : 优先级较高的运算符 比 优先级较低的运算符 先与 操作数 结合 ;
- 运算符优先级相同 : 运算符的优先级相同 , 则根据运算符的结合性 判定 哪个先与 操作数 结合 ;
小括号 优先级最高 , 可以直接改变 运算符 的 结合性 ;
一元运算符 的 优先级 仅次于 小括号 ;
2、运算符优先级 列举
下面的 运算符 优先级 按照 从上到下 顺序 , 优先级由高到低 ;
JavaScript 中的 运算符 优先级顺序 :
- 括号运算符 :
- 小括号运算符
()可以直接 用于改变 正常的 运算符 的 优先级顺序 ;
- 小括号运算符
- 一元运算符 : 下面的 运算符 优先级相同 ;
- 递增运算符
++: 前置递增 / 后置递增 ; - 递减运算符
--: 前置递减 / 后置递减 ; - 一元加运算符
+ - 一元减运算符
- - 逻辑非运算符
!
- 递增运算符
- 算术运算符 :
- 乘除运算符 : 下面的 运算符 优先级相同 ;
- 乘法运算符
* - 除法运算符
/ - 取模运算符
%
- 乘法运算符
- 加减运算符 : 下面的 运算符 优先级相同 ;
- 加法运算符
+ - 减法运算符
-
- 加法运算符
- 位移运算符 : 下面的 运算符 优先级相同 ;
- 左移运算符
<< - 右移运算符
>> - 无符号右移运算符
>>>
- 左移运算符
- 关系运算符 :
- 小于运算符
< - 大于运算符
> - 小于等于运算符
<= - 大于等于运算符
>=
- 小于运算符
- 相等运算符 :
- 等于运算符
== - 不等于运算符
!= - 严格等于运算符
=== - 严格不等于运算符
!==
- 等于运算符
- 逻辑运算符 :
&&操作符优先级 高于||操作符 ;- 逻辑与运算符
&& - 逻辑或运算符
||
- 逻辑与运算符
- 赋值运算符 :
- 赋值运算符
= - 加法赋值运算符
+= - 减法赋值运算符
-= - 乘法赋值运算符
*= - 除法赋值运算符
/= - 取模赋值运算符
%= - 左移赋值运算符
<<= - 右移赋值运算符
>>=
- 赋值运算符
- 逗号运算符
,
- 乘除运算符 : 下面的 运算符 优先级相同 ;
3、运算符示例
在下面的代码中 , 分析代码中表达式的 运算符优先级 ;
var exp = 2 > 3 || "Tom" == "Jerry" && !(2 * 3 == 6) && false
console.log(exp)
分析 上述 表达式 2 > 3 || "Tom" == "Jerry" && !(2 * 3 == 6) && false 中的 运算符优先级 :
- 小括号 运算符 优先级最高 ,
(2 * 3 == 6)中的运算符是结合在一起进行运算的 ;2 * 3 == 6中 , 算术运算符*优先级高于 相等运算符==优先级 , 先计算 乘法 得到6, 然后计算==是否相等 , 最终得到true值 ;
2 > 3 || "Tom" == "Jerry" && !(true) && false
- 一元运算符
!高于 除 小括号 意外的其它运算符 , 然后计算该运算 ,!true得到false;
2 > 3 || "Tom" == "Jerry" && false && false
2 > 3中的>优先级 是目前最高的 , 计算得到结果false;
false || "Tom" == "Jerry" && false && false
"Tom" == "Jerry"中的==运算符 目前优先级最高 , 计算得到结果false;
false || false && false && false
- 逻辑与
&&运算符 优先级 高于 逻辑或||运算符 , 先计算&&运算 , 有多个&&运算 , 从左到右结合即可 ;
false || false
- 最后计算 逻辑或
||操作 , 得到false结果 ;
完整代码如下 :
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<!-- 设置 meta 视口标签 -->
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no,maximum-scale=1.0,minimum-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>JavaScript</title>
<style></style>
<script>
// 运算符优先级
var exp = 2 > 3 || "Tom" == "Jerry" && !(2 * 3 == 6) && false
console.log(exp)
</script>
</head>
<body>
</body>
</html>
执行结果 :



















![B3870 [GESP202309 四级] 变长编码(膜拜版)](https://img-blog.csdnimg.cn/direct/3f66a3a4ee784cb2bcfc3ff26a835989.png)
