this
关键字 (The this
Keyword)new
运算符 (The new
Operator)super
关键字 (The super
Keyword)? :
) (Conditional Operator ( ? :
)),
)if
语句 (The if
Statement)do
-while
语句 (The do
-while
Statement)while
语句 (The while
Statement)for
语句 (The for
Statement)for
-in
、for
-of
与 for
-await
-of
语句continue
语句 (The continue
Statement)break
语句 (The break
Statement)return
语句 (The return
Statement)with
语句 (The with
Statement)switch
语句 (The switch
Statement)throw
语句 (The throw
Statement)try
语句 (The try
Statement)debugger
语句 (The debugger
Statement)?
u
m
/
p
1-9
0
`
ECMAScript 源码文本 (ECMAScript source text) 是一串 Unicode 码点。所有从 U+0000 到 U+10FFFF 的 Unicode 码点值(包括代理项码点 surrogate code points)在 ECMAScript 语法允许的地方都可以出现在 ECMAScript 源码文本中。用于存储与交换 ECMAScript 源码文本的实际编码方式与本规范无关。无论外部源码的字符编码为何,符合规范的 ECMAScript 实现都按其等价的
组合字符序列 (combining character sequence) 的各组成部分被分别当作单独的 Unicode 码点对待,即便用户可能把整个序列视为一个字符。
在字符串字面量、正则表达式字面量、模板字面量与标识符中,任意 Unicode 码点也可以通过显式表示其数值的 Unicode 转义序列来书写。在注释中,这样的转义序列被视为注释的一部分而等效忽略。
在 Unicode 转义序列的行为上,ECMAScript 与 Java 编程语言不同。在 Java 程序中,如果 Unicode 转义序列 \u000A
(例如)出现在单行注释内,它会被解释为行终止符(U+000A 是 LINE FEED (LF)),因此下一个码点不再属于该注释。同样地,如果 \u000A
出现在 Java 的字符串字面量中,它也被视为行终止符;行终止符不允许出现在字符串字面量内部——必须写作 \n
而不是 \u000A
才能使 LF 成为字符串值的一部分。在 ECMAScript 程序中,注释里的 Unicode 转义序列从不被解释,因此不会导致注释终止。类似地,ECMAScript 程序中字符串字面量里的 Unicode 转义序列始终贡献其字面意义,绝不会被解释成行终止符或可能终止字符串字面量的码点。
The abstract operation
The abstract operation
The abstract operation
The abstract operation
The abstract operation
The abstract operation
考虑某段文本在某处有一个提前错误,在其后又有语法错误。一个先解析后检测提前错误的实现可能只报告语法错误而未继续提前错误阶段。一个交错实现可能报告提前错误而不再寻找语法错误。第三种实现可能两者都报告。以上行为都符合规范。
另见
ECMAScript 代码有四种类型:
eval
函数的源码文本。更精确地说,如果传给内置 eval
的参数是 String,则其被视作 ECMAScript eval
调用的 eval 代码即该 函数代码 (Function code) 是被解析以提供 ECMAScript
此外,如果上述引用的源码被解析为:
则该声明或表达式的
将
指令序言 (Directive Prologue) 是出现在
Use Strict 指令 (Use Strict Directive) 是指令序言中的一个 "use strict"
或 'use strict'
。Use Strict 指令不允许包含
指令序言可包含多个 Use Strict 指令;实现可以在发生这种情况时发出警告。
指令序言中的
一个 ECMAScript 语法单元可以用不受限模式或严格模式语法与语义处理 (
eval
的直接调用位于严格模式代码中,则该 eval 代码为严格模式代码。
不是严格模式代码的 ECMAScript 代码称为 非严格代码 (non-strict code)。
The abstract operation
ECMAScript 实现可以支持求值其执行行为以