表达式和运算符

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

¥This chapter documents all the JavaScript language operators, expressions and keywords.

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

¥Expressions and operators by category

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

¥For an alphabetical listing see the sidebar on the left.

主要表达方式

¥Primary expressions

JavaScript 中的基本关键字和一般表达式。这些表达式具有最高优先级(高于 operators)。

¥Basic keywords and general expressions in JavaScript. These expressions have the highest precedence (higher than operators).

this

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

文字

基本 null、布尔值、数字和字符串文字。

[]

数组初始值设定项/文字语法。

{}

对象初始值设定项/文字语法。

function

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

class

class 关键字定义类表达式。

function*

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

async function

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

async function*

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

/ab+c/i

正则表达式文字语法。

`string`

模板文字语法。

( )

分组运算符。

左侧表达式

¥Left-hand-side expressions

左值是赋值的目标。

¥Left values are the destination of an assignment.

Property accessors

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

?.

如果引用是 nullishnullundefined),可选链接运算符将返回 undefined 而不会导致错误。

new

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

new.target

在构造函数中,new.target 指的是被 new 调用的构造函数。

import.meta

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

super

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

import()

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

自增和自减

¥Increment and decrement

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

¥Postfix/prefix increment and postfix/prefix decrement operators.

A++

后缀增量运算符。

A--

后缀自减运算符。

++A

前缀增量运算符。

--A

前缀减运算符。

一元运算符

¥Unary operators

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

¥A unary operation is an operation with only one operand.

delete

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

void

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

typeof

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

+

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

-

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

~

按位非运算符。

!

逻辑非运算符。

await

暂停和恢复异步函数并等待承诺的履行/拒绝。

算术运算符

¥Arithmetic operators

算术运算符将数值(文字或变量)作为操作数并返回单个数值。

¥Arithmetic operators take numerical values (either literals or variables) as their operands and return a single numerical value.

**

求幂运算符。

*

乘法运算符。

/

分部运算符。

%

余数运算符。

+(加)

加法运算符。

-

减法运算符。

关系运算符

¥Relational operators

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

¥A comparison operator compares its operands and returns a boolean value based on whether the comparison is true.

<(小于)

小于运算符。

>(大于)

大于运算符。

<=

小于或等于运算符。

>=

大于或等于运算符。

instanceof

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

in

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

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

¥Note: => is not an operator, but the notation for Arrow functions.

相等运算符

¥Equality operators

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

¥The result of evaluating an equality operator is always of type boolean based on whether the comparison is true.

==

相等运算符。

!=

不等式运算符。

===

严格相等运算符。

!==

严格不等式运算符。

按位移位运算符

¥Bitwise shift operators

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

¥Operations to shift all bits of the operand.

<<

按位左移运算符。

>>

按位右移运算符。

>>>

按位无符号右移运算符。

二元按位运算符

¥Binary bitwise operators

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

¥Bitwise operators treat their operands as a set of 32 bits (zeros and ones) and return standard JavaScript numerical values.

&

按位与。

|

按位或。

^

按位异或。

二元逻辑运算符

¥Binary logical operators

逻辑运算符实现布尔(逻辑)值并具有 short-circuiting 行为。

¥Logical operators implement boolean (logical) values and have short-circuiting behavior.

&&

逻辑与。

||

逻辑或。

??

空合并运算符。

条件(三元)运算符

¥Conditional (ternary) operator

(condition ? ifTrue : ifFalse)

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

赋值运算符

¥Assignment operators

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

¥An assignment operator assigns a value to its left operand based on the value of its right operand.

=

赋值运算符。

*=

乘法赋值。

/=

分工分配。

%=

余数赋值。

+=

加法作业。

-=

减法作业

<<=

左移分配。

>>=

右移赋值。

>>>=

无符号右移赋值。

&=

按位与赋值。

^=

按位异或赋值。

|=

按位或赋值。

**=

求幂赋值。

&&=

逻辑与赋值。

||=

逻辑或赋值。

??=

空合并赋值。

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

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

收益算子

¥Yield operators

yield

暂停和恢复生成器功能。

yield*

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

扩展语法

¥Spread syntax

...obj

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

逗号运算符

¥Comma operator

,

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

规范

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

¥Specifications

浏览器兼容性

BCD tables only load in the browser

¥Browser compatibility

也可以看看

¥See also