JavaScript 运算符详解:从基础算术到优先级规则
本文系统介绍 JavaScript 中的各类运算符,涵盖算术、逻辑、位运算及赋值操作。重点解析条件(三元)运算符、delete 删除运算符、除法与复合赋值运算符的用法,并通过实例说明递增递减运算符的前置后置区别。最后梳理运算符优先级表,帮助开发者掌握表达式求值顺序,编写更高效的代码。
复合赋值运算符
| 运算符 | 符号 |
|---|---|
| 加法 | += |
| 按位与 | &= |
| 按位或 | |= |
| 按位异或 | ^= |
| 除法 | /= |
| 左移 | <<= |
| 取模 | %= |
| 乘法 | *= |
| 右移 | >>= |
| 减法 | -= |
| 无符号右移 | >>>= |
要求
版本信息
条件(三目)运算符 (?:)
该运算符用于根据布尔条件的真假,在两个语句中选择一个执行。
语法结构为 test ? test1 : statement12statement2。
参数
test
这是一个布尔表达式,用于判断条件。
statement1
当 test 表达式结果为 true 时执行的代码块,支持复合语句。
statement2
当 test 表达式结果为 false 时执行的代码块,同样支持复合语句。
说明
?: 运算符本质上是 if...else 语句的简写形式,常用于需要嵌入较大表达式中的场景,此时使用完整的 if...else 会显得冗余。例如:
var now = new Date();
var greeting = "Good" + ((now.getHours() > 17) ? " evening." : " day.");
上述代码在下午 6 点(17 时)之后,会拼接 "Good evening." 字符串;否则拼接 "Good day."。若使用 if...else 实现相同逻辑,代码如下:
var now = new Date(); var greeting = "Good"; if (now.getHours() > 17)greeting += " evening.";elsegreeting += " day.";
要求
版本 1
请参阅
if...else 语句 | 运算符优先级 | 运算符总结
delete 运算符
该运算符用于从对象中移除指定属性,或从数组中删除指定元素。
delete expression
expression 参数需为有效的 JScript 表达式,通常指向属性名或数组索引。
说明
若 expression 指向的对象属性存在且该对象禁止删除此属性,则返回 false。
其他所有情况下,该运算符返回 true。
要求
版本 3
请参阅
运算符优先级 | 运算符总结
除法赋值运算符 (/=)
该运算符将变量当前值除以表达式值,并将计算结果重新赋值给该变量。
result /= expression
参数
result
接收计算结果的数值变量。
expression
用于除法的数值表达式。
说明
使用 /= 运算符的效果等同于执行以下标准赋值语句:
result = result / expression
要求
版本 1
请参阅
/ 运算符 | 运算符优先级 | 运算符总结
除法运算符 (/)
该运算符用于计算两个表达式值的商。
result = number1 / number2
参数
result
存储除法结果的数值变量。
number1
被除数,任意数值表达式。
number2
除数,任意数值表达式。
要求
版本 1
请参阅
/= 运算符 | 运算符优先级 | 运算符总结
in 运算符
该运算符用于检测对象中是否存在指定的属性。
result = property in object
参数
result
必选参数,用于接收判断结果的任意变量。
property
必选参数,表示属性名的字符串表达式。
object
必选参数,待检测的任意对象。
说明
in 运算符检查对象中是否包含名为 property 的属性,同时也会检查原型链以确定该属性是否源自原型。
要求
版本 1
请参阅
运算符优先级 | 运算符总结
递增 (++) 和递减 (--) 运算符
这两个运算符用于将变量的值增加或减少 1。
语法 1
result = ++variable
result = --variable
result = variable++result = variable--
语法 2
++variable
--variable
variable++variable--
参数
result
接收运算结果的变量。
variable
参与递增或递减操作的任意变量。
说明
递增和递减运算符是修改变量值的快捷方式。表达式的返回值取决于运算符位于变量之前(前置)还是之后(后置):
var j, k;
k = 2;
j = ++k;
由于递增操作在表达式求值前执行,变量 k 先加 1,因此 j 被赋值为 3。
对比以下示例:
var j, k;
k = 2;
j = k++;
在此例中,递增操作在表达式求值后执行,变量 k 先参与赋值再加 1,因此 j 被赋值为 2。
JavaScript 提供了全面的运算符集,包括算术、逻辑、位运算以及赋值运算符,此外还包含其他特殊运算符。
计算 逻辑 位运算 赋值 杂项
描述 符号
负值 -
逻辑非 !
按位取反 ~
赋值 =
删除 delete
递增 ++
小于 <
按位左移 <<
运算赋值 oP= typeof
运算符
递减 --
大于 >
按位右移 >>
void 运算符 void
乘法 *
小于等于 <=
无符号右移 >>>
除法 /
大于等于 >=
按位与 &
取模运算 %
等于 ==
按位异或 ^
加法 +
不等于 !=
按位或 |
减法 -
逻辑与 &&
逻辑或 ||
条件(三元运算符) ?:
逗号 ,
恒等 ===
不恒等 !==
运算符优先极
JavaScript 中的运算符遵循特定的求值顺序,即运算符优先级。下表按优先级从高到低列出了各类运算符。同一行内的运算符按照从左至右的顺序进行求值。
运算符 描述
. [] () 字段访问、数组下标以及函数调用
++ -- - ~ ! typeof new void delete 一元运算符、返回数据类型、对象创建、未定义值
* / % 乘法、除法、取模
+ - + 加法、减法、字符串连接
<< >> >>> 移位
< <= > >= 小于、小于等于、大于、大于等于
= != === !== 等于、不等于、恒等、不恒等
& 按位与
^ 按位异或
| 按位或
&& 逻辑与
|| 逻辑或
?: 条件
= oP= 赋值、运算赋值
, 多重求值
圆括号可用于改变默认的求值顺序。圆括号内的表达式必须在用于语句其余部分之前全部完成求值。
高优先级的运算符会在低优先级运算符之前被求值。例如:
z = 78 * (96 + 3 + 45)
该表达式包含五个运算符:=, *, (), +, 以及 +。根据优先级规则,它们的求值顺序依次为:(), *, +, +, =。
首先计算圆括号内的表达式:其中包含两个加法运算符,优先级相同,因此先计算 96 加 3 得到 99,再将结果与 45 相加,最终得到 144。
接着执行乘法运算:将 78 与 144 相乘,得到结果 11232。
最后执行赋值运算:将计算结果 11232 赋值给变量 z。
JS动态构建复杂嵌套JSON对象的方法
2026-11-05 15:41:52
JS负数取余为什么是负数?详解余数与模运算区别
2026-11-05 13:34:41
JS 解压出现乱码或报错怎么解决?
2026-11-05 12:32:38
JS 中 startsWith、indexOf 与正则判断字符串前缀的对比
2026-11-04 22:19:43
JS解析Excel后怎么将数据转换为JSON格式
2026-11-04 20:58:28
