表达式和运算符

本章记录了所有 JavaScript 语言运算符、表达式和关键字。

按类别划分的表达式和运算符

按字母顺序排列的列表请参阅左侧边栏。

主要表达式

JavaScript 中的基本关键字和通用表达式。这些表达式具有最高的优先级(高于运算符)。

this

this 关键字指代执行上下文的一个特殊属性。

字面量

基本的 null、布尔值、数字和字符串字面量。

[]

数组初始化器/字面量语法。

{}

对象初始化器/字面量语法。

function

function 关键字定义函数表达式。

class

class 关键字定义类表达式。

function*

function* 关键字定义生成器函数表达式。

async function

async function 定义异步函数表达式。

async function*

async function* 关键字定义异步生成器函数表达式。

/ab+c/i

正则表达式字面量语法。

`string`

模板字面量语法。

( )

分组运算符。

左侧表达式

左值是赋值的目的地。

属性访问器

成员运算符提供对对象属性或方法的访问(object.propertyobject["property"])。

?.

如果引用为空值nullundefined),可选链运算符返回 undefined 而不是引发错误。

new

new 运算符创建构造函数的实例。

new.target

在构造函数中,new.target 指代由 new 调用的构造函数。

import.meta

向 JavaScript 模块公开上下文特定元数据的对象。

super

super 关键字调用父构造函数或允许访问父对象的属性。

import()

import() 语法允许将模块异步和动态加载到潜在的非模块环境中。

递增和递减

后缀/前缀递增和后缀/前缀递减运算符。

A++

后缀递增运算符。

A--

后缀递减运算符。

++A

前缀递增运算符。

--A

前缀递减运算符。

一元运算符

一元运算是只有一个操作数的运算。

delete

delete 运算符从对象中删除属性。

void

void 运算符评估表达式并丢弃其返回值。

typeof

typeof 运算符确定给定对象的类型。

+

一元加号运算符将其操作数转换为 Number 类型。

-

一元取反运算符将其操作数转换为 Number 类型,然后取反。

~

按位非运算符。

!

逻辑非运算符。

await

暂停和恢复异步函数,并等待 Promise 的 fulfilled/rejected 状态。

算术运算符

算术运算符将其操作数(字面量或变量)作为数值,并返回一个数值。

**

指数运算符。

*

乘法运算符。

/

除法运算符。

%

余数运算符。

+(加)

加法运算符。

-

减法运算符。

关系运算符

比较运算符比较其操作数,并根据比较是否为真返回布尔值。

<(小于)

小于运算符。

>(大于)

大于运算符。

<=

小于或等于运算符。

>=

大于或等于运算符。

instanceof

instanceof 运算符确定一个对象是否是另一个对象的实例。

in

in 运算符确定一个对象是否具有给定属性。

注意: => 不是运算符,而是箭头函数的表示法。

相等运算符

根据比较是否为真,相等运算符的评估结果始终为布尔类型。

==

相等运算符。

!=

不相等运算符。

===

严格相等运算符。

!==

严格不相等运算符。

位移位运算符

移动操作数所有位的操作。

<<

按位左移运算符。

>>

按位右移运算符。

>>>

按位无符号右移运算符。

二进制按位运算符

按位运算符将其操作数视为一组 32 位(零和一),并返回标准 JavaScript 数值。

&

按位与。

|

按位或。

^

按位异或。

二进制逻辑运算符

逻辑运算符实现布尔(逻辑)值并具有短路行为。

&&

逻辑与。

||

逻辑或。

??

空值合并运算符。

条件(三元)运算符

(condition ? ifTrue : ifFalse)

条件运算符根据条件的逻辑值返回两个值之一。

赋值运算符

赋值运算符根据其右操作数的值将其值赋给其左操作数。

=

赋值运算符。

*=

乘法赋值。

/=

除法赋值。

%=

余数赋值。

+=

加法赋值。

-=

减法赋值

<<=

左移赋值。

>>=

右移赋值。

>>>=

无符号右移赋值。

&=

按位与赋值。

^=

按位异或赋值。

|=

按位或赋值。

**=

指数赋值。

&&=

逻辑与赋值。

||=

逻辑或赋值。

??=

空值合并赋值。

[a, b] = arr, { a, b } = obj

解构允许您使用类似于数组或对象字面量的语法将数组或对象的属性分配给变量。

yield 运算符

yield

暂停和恢复生成器函数。

yield*

委托给另一个生成器函数或可迭代对象。

扩展语法

...obj

扩展语法允许在预期零个或多个参数(用于函数调用)或元素(用于数组字面量)的位置展开可迭代对象,例如数组或字符串。在对象字面量中,扩展语法枚举对象的属性并将键值对添加到正在创建的对象中。

逗号运算符

,

逗号运算符允许在单个语句中评估多个表达式,并返回最后一个表达式的结果。

规范

规范
ECMAScript® 2026 语言规范
# sec-void-operator
ECMAScript® 2026 语言规范
# sec-equality-operators
ECMAScript® 2026 语言规范
# sec-exp-operator
ECMAScript® 2026 语言规范
# prod-ArgumentList
ECMAScript® 2026 语言规范
# prod-LogicalORExpression
ECMAScript® 2026 语言规范
# sec-generator-function-definitions-runtime-semantics-evaluation
ECMAScript® 2026 语言规范
# prod-OptionalExpression
ECMAScript® 2026 语言规范
# prod-PropertyDefinition
ECMAScript® 2026 语言规范
# prod-BitwiseXORExpression
ECMAScript® 2026 语言规范
# sec-multiplicative-operators
ECMAScript® 2026 语言规范
# sec-grouping-operator
ECMAScript® 2026 语言规范
# sec-conditional-operator
ECMAScript® 2026 语言规范
# sec-destructuring-assignment
ECMAScript® 2026 语言规范
# sec-destructuring-binding-patterns
ECMAScript® 2026 语言规范
# sec-assignment-operators
ECMAScript® 2026 语言规范
# sec-typeof-operator
ECMAScript® 2026 语言规范
# sec-logical-not-operator
ECMAScript® 2026 语言规范
# sec-postfix-decrement-operator
ECMAScript® 2026 语言规范
# sec-signed-right-shift-operator
ECMAScript® 2026 语言规范
# sec-relational-operators
ECMAScript® 2026 语言规范
# prod-CoalesceExpression
ECMAScript® 2026 语言规范
# prod-BitwiseORExpression
ECMAScript® 2026 语言规范
# sec-addition-operator-plus
ECMAScript® 2026 语言规范
# sec-unary-plus-operator
ECMAScript® 2026 语言规范
# sec-left-shift-operator
ECMAScript® 2026 语言规范
# sec-unary-minus-operator
ECMAScript® 2026 语言规范
# sec-async-function-definitions
ECMAScript® 2026 语言规范
# sec-null-value
ECMAScript® 2026 语言规范
# sec-built-in-function-objects
ECMAScript® 2026 语言规范
# sec-import-calls
ECMAScript® 2026 语言规范
# sec-unsigned-right-shift-operator
ECMAScript® 2026 语言规范
# sec-this-keyword
ECMAScript® 2026 语言规范
# prod-ImportMeta
ECMAScript® 2026 语言规范
# sec-comma-operator
ECMAScript® 2026 语言规范
# prod-BitwiseANDExpression
ECMAScript® 2026 语言规范
# sec-super-keyword
ECMAScript® 2026 语言规范
# prod-YieldExpression
ECMAScript® 2026 语言规范
# sec-delete-operator
ECMAScript® 2026 语言规范
# prod-SpreadElement
ECMAScript® 2026 语言规范
# sec-postfix-increment-operator
ECMAScript® 2026 语言规范
# sec-generator-function-definitions
ECMAScript® 2026 语言规范
# sec-class-definitions
ECMAScript® 2026 语言规范
# sec-function-definitions
ECMAScript® 2026 语言规范
# prod-LogicalANDExpression
ECMAScript® 2026 语言规范
# sec-subtraction-operator-minus
ECMAScript® 2026 语言规范
# sec-property-accessors
ECMAScript® 2026 语言规范
# sec-bitwise-not-operator
ECMAScript® 2026 语言规范
# sec-object-initializer
ECMAScript® 2026 语言规范
# sec-new-operator
ECMAScript® 2026 语言规范
# sec-async-generator-function-definitions
HTML
# import-meta-resolve

浏览器兼容性

另见