JavaScript 运算符详解:从基础算术到优先级规则

作者:纸飞机时间:2026-10-22 08:35:05浏览:375

本文系统介绍 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.";
else
   greeting += " 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。


作者最新文章