语法

优质
小牛编辑
199浏览
2023-12-01

格式控制符

空白符

行终止符

注释

行注释

块注释

Hashbang 注释

关键字

表达式与操作符

字面量

Null 字面量

null 是原始类型之一,表示一个没有值的对象。它是一个字面量,而不是一个标识符,也不像 undefined 一样是全局对象的属性。

数组字面量

数组字面量是一个用 [] 括起来的包含零个或多个用逗号分割的表达式的列表,每个表达式都代表了数组的元素。

布尔字面量

布尔类型有 truefalse 这两个字面量。

浮点字面量

浮点字面量可以由以下几部分组成:

  • 可以有符号(+- 前缀)的十进制整数;

  • 小数点;

  • 小数;

  • 指数。

其中,指数部分是 eE 后面跟着一个可以带有 +- 的整数。浮点字面量至少有一位数字,而且必须带小数点或者 eE 也可以),即需要遵循以下语法:

[(+|-)][digits].[digits][(E|e)[(+|-)]digits]

数值字面量

包含 NumberBigInt 类型,可以用十进制(不以 0 开头的数字)、十六进制(以 0x0X 开头)、八进制(以 00o0O 开头)和二进制(以 0b0B 开头)来表示。

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

作用于可迭代对象,如 ArrayStringMapSet 和 TypedArray。

for await...of

while

其他

debugger

export

import

import.meta

label

with