语法
格式控制符
空白符
行终止符
注释
行注释
块注释
Hashbang 注释
关键字
表达式与操作符
字面量
Null 字面量
null
是原始类型之一,表示一个没有值的对象。它是一个字面量,而不是一个标识符,也不像 undefined
一样是全局对象的属性。
数组字面量
数组字面量是一个用 []
括起来的包含零个或多个用逗号分割的表达式的列表,每个表达式都代表了数组的元素。
布尔字面量
布尔类型有 true
和 false
这两个字面量。
浮点字面量
浮点字面量可以由以下几部分组成:
- 可以有符号(
+
或-
前缀)的十进制整数; - 小数点;
- 小数;
- 指数。
其中,指数部分是 e
或 E
后面跟着一个可以带有 +
或 -
的整数。浮点字面量至少有一位数字,而且必须带小数点或者 e
(E
也可以),即需要遵循以下语法:
[(+|-)][digits].[digits][(E|e)[(+|-)]digits]
数值字面量
包含 Number
和 BigInt
类型,可以用十进制(不以 0
开头的数字)、十六进制(以 0x
或 0X
开头)、八进制(以 0
、0o
或 0O
开头)和二进制(以 0b
或 0B
开头)来表示。
0, 117, -345, 123456789123456789n // 十进制
015, 0001, -0o77, 0o777777777777n // 八进制
0x1123, 0x00111, -0xF1A7, 0x123456789ABCDEFn // 十六进制
0b11, 0b0011, -0b11, 0b11101001010101010101n // 二进制
需要注意的是,以 0
开头的数字也可以被认为是十进制,但其后所跟的数字必须至少有一个不小于 8
,否则会被当成八进制处理。
对象字面量
正则表达式字面量
字符串字面量
JavaScript 中的特殊字符:
字符 | 含义 |
---|---|
\0 |
Null 字节 |
\b |
退格符 |
\f |
换页符 |
\n |
换行符 |
\r |
回车符 |
\t |
制表符 |
\v |
垂直制表符 |
\' |
单引号 |
\" |
双引号 |
\\ |
反斜杠 |
\XXX |
The character with the Latin-1 encoding specified by up to three octal digits XXX between 0 and 377. For example, \251 is the octal sequence for the copyright symbol. |
\xXX |
The character with the Latin-1 encoding specified by the two hexadecimal digits XX between 00 and FF. For example, \xA9 is the hexadecimal sequence for the copyright symbol. |
\uXXXX |
The Unicode character specified by the four hexadecimal digits XXXX. For example, \u00A9 is the Unicode sequence for the copyright symbol. See Unicode escape sequences. |
\u{XXXXX} |
Unicode code point escapes. For example, \u{2F804} is the same as the simple Unicode escapes \uD87E\uDC04. |
模板字面量
运算符优先级
优先级 | 运算符类型 | 相关性 | Individual operators |
---|---|---|---|
20 | 分组 | n/a | ( … ) |
19 | 成员访问 | 从左到右 | … . … |
19 | 需计算的成员访问 | 从左到右 | … [ … ] |
19 | new (有参数列表) |
n/a | new … ( … ) |
19 | 函数调用 | 从左到右 | … ( … ) |
18 | new (无参数列表) |
从右到左 | new … |
17 | 后置递增 | n/a | … ++ |
17 | 后置递减 | n/a | … -- |
16 | 逻辑非 | 从右到左 | ! … |
16 | 按位非 | 从右到左 | ~ … |
16 | 一元正 | 从右到左 | + … |
16 | 一元负 | 从右到左 | - … |
16 | 前置递增 | 从右到左 | ++ … |
16 | 前置递减 | 从右到左 | -- … |
16 | typeof |
从右到左 | typeof … |
16 | void |
从右到左 | void … |
16 | delete |
从右到左 | delete … |
16 | await |
从右到左 | await … |
15 | 幂 | 从右到左 | … ** … |
14 | 乘法 | 从左到右 | … * … |
14 | 除法 | 从左到右 | … / … |
14 | 取模 | 从左到右 | … % … |
13 | 加法 | 从左到右 | … + … |
13 | 减法 | 从左到右 | … - … |
12 | 按位左移 | 从左到右 | … << … |
12 | 按位右移 | 从左到右 | … >> … |
12 | 无符号右移 | 从左到右 | … >>> … |
11 | 小于 | 从左到右 | … < … |
11 | 小于等于 | 从左到右 | … <= … |
11 | 大于 | 从左到右 | … > … |
11 | 大于等于 | 从左到右 | … >= … |
11 | in |
从左到右 | … in … |
11 | instanceof |
从左到右 | … instanceof … |
10 | 等号 | 从左到右 | … == … |
10 | 非等号 | 从左到右 | … != … |
10 | 全等号 | 从左到右 | … === … |
10 | 非全等号 | 从左到右 | … !== … |
9 | 按位与 | 从左到右 | … & … |
8 | 按位异或 | 从左到右 | … ^ … |
7 | 按位或 | 从左到右 | … | … |
6 | 逻辑与 | 从左到右 | … && … |
5 | 逻辑或 | 从左到右 | … || … |
4 | 条件运算符 | 从右到左 | … ? … : … |
3 | 赋值 | 从右到左 | … = … … += … … -= … … **= … … *= … … /= … … %= … … <<= … … >>= … … >>>= … … &= … … ^= … … |= … |
2 | yield |
从右到左 | yield … |
2 | yield* |
从右到左 | yield* … |
1 | 逗号 | 从左到右 | … , … |
声明与定义
控制流程
块
break
continue
空
if...else
switch
throw
try...catch
定义
var
let
const
函数与类
function
function*
async function
return
class
迭代
do...while
for
for...in
以任意顺序遍历一个对象的可枚举属性。
for...of
作用于可迭代对象,如 Array
、String
、Map
、Set
和 TypedArray。