表达式和运算符
该章节说明了JavaScript语言所有的运算符,表达式和关键字。
表达式和运算符分类
左侧工具栏是按字母表排序的列表。
主要表达式
JavaScript中基本关键字和常用表达式。
thisthis关键字指向函数的执行上下文。functionfunction关键字定义了函数表达式。classclass关键字定义了类表达式。function*function*关键字定义了一个 generator 函数表达式。yield- 暂停和恢复 generator 函数。
yield*- 委派给另外一个generator函数或可迭代的对象。
async functionasync function定义一个异步函数表达式。await- 暂停或恢复执行异步函数,并等待promise的resolve/reject回调。
[]- 数组初始化/字面量语法。
{}- 对象初始化/字面量语法。
/ab+c/i- 正则表达式字面量语法。
( )- 分组操作符。
左表达式
左边的值是赋值的目标。
自增和自减
前置/后置自增运算符和前置/后置自减运算符。
A++(en-US)- 后置自增运算符。
A--(en-US)- 后置自减运算符。
++A(en-US)- 前置自增运算符。
--A(en-US)- 前置自减运算符。
一元运算符
一元运算符只有一个操作数.
算术运算符
算术运算符以二个数值(字面量或变量)作为操作数,并返回单个数值。
关系运算符
比较运算符比较二个操作数并返回基于比较结果的Boolean值。
inin运算符用来判断对象是否拥有给定属性。.instanceofinstanceof运算符判断一个对象是否是另一个对象的实例。<(en-US)- 小于运算符。
>(en-US)- 大于运算符。
<=(en-US)- 小于等于运算符。
>=(en-US)- 大于等于运算符。
箭头函数的表示符。相等运算符
如果相等,操作符返回的是布尔类型的true,否则是false。
==(en-US)- 相等 运算符.
!=(en-US)- 不等 运算符.
===(en-US)- 全等 运算符.
!==(en-US)- 非全等 运算符.
位移运算符
在二进制的基础上对数字进行移动操作
<<(en-US)- 按位左移运算符。
>>(en-US)- 按位右移运算符。
>>>(en-US)- 按位无符号右移运算符。
二进制位运算符
二进制运算符将它们的操作数作为32个二进制位(0或1)的集合,并返回标准的JavaScript数值。
二元逻辑运算符
逻辑运算符典型的用法是用于布尔(逻辑)值运算, 它们返回布尔值。
&&(en-US)- 逻辑与。
||(en-US)- 逻辑或。
??- 空值合并运算符,如果 ?? 前面是 null 或 undefined,取后面的默认值
条件(三元)运算符
(condition ? ifTrue : ifFalse)-
条件元素运算符把两个结果中其中一个符合运算逻辑的值返回。
赋值运算符
赋值元素符会将右边的操作数的值分配给左边的操作数,并将其值修改为右边操作数相等的值。
=(en-US)- 赋值运算符。
*=(en-US)- 赋值乘积。
/=(en-US)- 赋值商。
%=(en-US)- 赋值求余。
+=(en-US)- 赋值求和。
-=(en-US)- 赋值求差。
<<=(en-US)- 左位移。
>>=(en-US)- 右位移。
>>>=(en-US)- 无符号右位移。
&=(en-US)- 赋值与。
^=(en-US)- 赋值按位异或。
|=(en-US)- 赋值或。
&&=- 逻辑和赋值运算符。
||=- 逻辑或赋值运算符。
??=- 逻辑空赋值运算符。
[a, b] = [1, 2]
{a, b} = {a:1, b:2}-
解构赋值允许你分配数组或者对象变量的属性通过使用规定的语法,其看起来和数组和对象字面量很相似。
-
逗号操作符
,- 逗号操作符允许在一个判断状态中有多个表达式去进行运算并且最后返回最后一个表达式的值。
-
非标准化特性
- Expression closures 已废弃 Gecko 60
- 闭包表达式语法是一个缩写简单的函数。
- Legacy generator function 已废弃 Gecko 58
- function关键字能用来定义表达式内部未执行完的function的余下功能。 为了能执行function内部余下的代码, 这个function的内部至少包含一个
yield表达式。 [for (x of y) x]已废弃 Gecko 58- 数组解析
(for (x of y) y)已废弃 Gecko 58- 生成器解析
规范
| Specification | Status | Comment |
|---|---|---|
| ECMAScript 1st Edition (ECMA-262) Expressions |
Standard | Initial definition |
| ECMAScript 5.1 (ECMA-262) Expressions |
Standard | |
| ECMAScript 2015 (6th Edition, ECMA-262) ECMAScript Language: Expressions |
Standard | New: Spread syntax, rest syntax, destructuring assignment, super keyword. |
| ECMAScript (ECMA-262) ECMAScript Language: Expressions |
Living Standard |
浏览器兼容
BCD tables only load in the browser

Formed in 2009, the Archive Team (not to be confused with the archive.org Archive-It Team) is a rogue archivist collective dedicated to saving copies of rapidly dying or deleted websites for the sake of history and digital heritage. The group is 100% composed of volunteers and interested parties, and has expanded into a large amount of related projects for saving online and digital history.
