表达式和运算符

该章节说明了 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 的兑现或拒绝。

算术运算符

算术运算符以二个数值(字面量或变量)作为操作数,并返回单个数值。

**

求幂运算符。

*

乘法运算符。

/

除法运算符。

%

取模运算符。

+(加)

加法运算符。

-

减法运算符。

关系运算符

比较运算符比较两个操作数并返回基于比较结果的布尔值。

<(小于)

小于运算符。

>(大于)

大于运算符。

<=

小于等于运算符。

>=

大于等于运算符。

instanceof

instanceof 运算符判断一个对象是否是另一个对象的实例。

in

in 运算符用来判断对象是否拥有给定属性。

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

相等运算符

相等运算符的求值结果始终是布尔类型(基于比较是否为 true)。

==

相等运算符。

!=

不等运算符。

===

严格相等运算符。

!==

严格不相等运算符。

位移运算符

对操作数的所有二进制位进行移动操作。

<<

按位左移运算符。

>>

按位右移运算符。

>>>

按位无符号右移运算符。

二进制位运算符

二进制运算符将它们的操作数作为 32 个二进制位(0 或 1)的集合,并返回标准的 JavaScript 数值。

&

按位与(AND)。

|

按位或(OR)。

^

按位异或(XOR)。

二元逻辑运算符

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

&&

逻辑与(AND)。

||

逻辑或(OR)。

??

空值合并运算符。

条件(三元)运算符

(condition ? ifTrue : ifFalse)

条件运算符返回两个值中符合条件逻辑值的那个值。

赋值运算符

赋值运算符将右边的操作数的值赋给左边的操作数。

=

赋值运算符。

*=

赋值乘积。

/=

赋值商。

%=

赋值求余。

+=

赋值求和。

-=

赋值求差。

<<=

左位移。

>>=

右位移。

>>>=

无符号右位移。

&=

赋值与(AND)。

^=

赋值按位异或(XOR)。

|=

赋值或(OR)。

**=

求幂赋值。

&&=

逻辑和赋值运算符。

||=

逻辑或赋值运算符。

??=

逻辑空赋值运算符。

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

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

Yield 运算符

yield

暂停和恢复生成器函数。

yield*

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

展开语法

...obj

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

逗号运算符

,

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

规范

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

浏览器兼容性

BCD tables only load in the browser

参见