语法
格式控制符
空白符
行终止符
注释
行注释
块注释
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 中的特殊字符:
字符 | 含义 |
| Null 字节 |
| 退格符 |
| 换页符 |
| 换行符 |
| 回车符 |
| 制表符 |
| 垂直制表符 |
| 单引号 |
| 双引号 |
| 反斜杠 |
| 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. |
| 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. |
| 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. |
| 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 |
| n/a |
|
19 | 函数调用 | 从左到右 |
|
18 |
| 从右到左 |
|
17 | 后置递增 | n/a |
|
17 | 后置递减 | n/a |
|
16 | 逻辑非 | 从右到左 |
|
16 | 按位非 | 从右到左 |
|
16 | 一元正 | 从右到左 |
|
16 | 一元负 | 从右到左 |
|
16 | 前置递增 | 从右到左 |
|
16 | 前置递减 | 从右到左 |
|
16 |
| 从右到左 |
|
16 |
| 从右到左 |
|
16 |
| 从右到左 |
|
16 |
| 从右到左 |
|
15 | 幂 | 从右到左 |
|
14 | 乘法 | 从左到右 |
|
14 | 除法 | 从左到右 |
|
14 | 取模 | 从左到右 |
|
13 | 加法 | 从左到右 |
|
13 | 减法 | 从左到右 |
|
12 | 按位左移 | 从左到右 |
|
12 | 按位右移 | 从左到右 |
|
12 | 无符号右移 | 从左到右 |
|
11 | 小于 | 从左到右 |
|
11 | 小于等于 | 从左到右 |
|
11 | 大于 | 从左到右 |
|
11 | 大于等于 | 从左到右 |
|
11 |
| 从左到右 |
|
11 |
| 从左到右 |
|
10 | 等号 | 从左到右 |
|
10 | 非等号 | 从左到右 |
|
10 | 全等号 | 从左到右 |
|
10 | 非全等号 | 从左到右 |
|
9 | 按位与 | 从左到右 |
|
8 | 按位异或 | 从左到右 |
|
7 | 按位或 | 从左到右 |
|
6 | 逻辑与 | 从左到右 |
|
5 | 逻辑或 | 从左到右 |
|
4 | 条件运算符 | 从右到左 |
|
3 | 赋值 | 从右到左 |
|
2 |
| 从右到左 |
|
2 |
| 从右到左 |
|
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。