表达式和运算符


该章节说明了Javascript语言所有的运算符,表达式和关键字。

表达式和运算符分类

左侧工具栏是按字母表排序的列表。

主要表达式

JavaScript中基本关键字和常用表达式。

this
this 关键字指向函数的执行上下文。
function
function 关键字定义了函数表达式。
class
class 关键字定义了类表达式。
function*
function* 关键字定义了一个 generator 函数表达式。
yield
暂停和恢复 generator 函数。
yield*
委派给另外一个generator函数或可迭代的对象。
[]
数组初始化/字面量语法。
{}
对象初始化/字面量语法。
/ab+c/i
正则表达式字面量语法。
[for (x of y) x]
数组推导式。
(for (x of y) y)
Generator comprehensions。
( )
圆括号操作符。

Left-hand-side expressions

Left values are the destination of an assignment.

Property accessors
成员访问可以访问对象的属性或方法
(object.property and object["property"]).
new
new 运算符创建了构造函数实例.
super
super 关键字调用父类的构造器.
...obj
展开运算符可以将一个可迭代的对象在函数调用的位置展开成为多个参数,或者在数组字面量中展开成多个数组元素。

自增运算和自减运算

前置/后置自增运算符和前置/后置自减运算符.

A++
后置自增运算符.
A--
后置自减运算符.
++A
前置自增运算符.
--A
前置自减运算符.

一元运算符

一元运算符只有一个操作数.

delete
delete 运算符用来删除对象的属性.
void
void 运算符表示表达式放弃返回值.
typeof
typeof 运算符用来判断给定对象的类型.
+
一元加运算符将操作转换为Number类型.
-
一元减运算符将操作转换为Number类型并取反.
~
按位非运算符.
!
逻辑非运算符.

算数运算符

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

+
加法运算符.
-
减法运算符.
/
除法运算符.
*
乘法运算符.
%
取模运算符.

关系运算符

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

in
in运算符用来判断对象是否拥有给定属性.
instanceof
instanceof 运算符判断一个对象是否是另一个对象的实例.
<
小于运算符
>
大于运算符.
<=
小于等于运算符.
>=
大于等于运算符.

相等操作符

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

==
相等 运算符.
!=
不等 运算符.
===
全等 运算符.
!==
非全等 运算符.

位移运算符

Operations to shift all bits of the operand.

<<
Bitwise left shift operator.
>>
Bitwise right shift operator.
>>>
Bitwise unsigned right shift operator.

二元按位运算符

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

&
Bitwise AND.
|
Bitwise OR.
^
Bitwise XOR.

二元逻辑运算符

逻辑运算符是典型的使用boolean(逻辑)值, and when they are, they return a boolean value.

&&
逻辑与.
||
逻辑或.

条件判断 (三元) 运算符

(condition ? ifTrue : ifFalse)

条件元素运算符把两个结果中其中一个符合运算逻辑的值返回。

赋值运算符

赋值元素符会将右边的操作数的值分配给左边的操作数,并将其值修改为右边操作数相等的值。

=
赋值运算符。
*=
赋值乘积。
/=
赋值商。
%=
赋值求余。
+=
赋值求和。
-=
赋值求差。
<<=
左位移。
>>=
右位移。
>>>=
无符号右位移。
&=
赋值与。
^=
赋值按位异或。
|=
赋值或。
[a, b] = [1, 2]
{a, b} = {a:1, b:2}

解构赋值允许你分配数组或者对象变量的属性通过使用规定的语法,其看起来和数组和对象字面量很相似。

逗号操作符

,
逗号操作符允许在一个判断状态中有多个表达式去进行运算并且最后返回最后一个表达式的值。

非标准化特性

Legacy generator function
function关键字能用来定义表达式内部未执行完的function的余下功能。 为了能执行function内部余下的代码, 这个function的内部至少包含一个yield 表达式。
Expression closures
闭包表达式语法是一个缩写简单的函数。
[for (x of y) x]
数组解析
(for (x of y) y)
生成器解析

规范

规范 状态 说明
ECMAScript 1st Edition. Standard 初始化定义
ECMAScript 5.1 (ECMA-262)
Expressions
Standard  
ECMAScript 2015 (6th Edition, ECMA-262)
ECMAScript Language: Expressions
Standard 新增:展开运算符,解构赋值,super 关键字,数组推导式,生成器推导式

相关链接

运算符优先级

文档标签和贡献者