We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
SourceCharacter :: 任何Unicode码点
ECMAScript代码使用Unicode表示。ECMAScript源文本是一系列码点。所有在 U+0000 ~ U+10FFFF 之间的Unicode码点值,包含代理码点,都可能出现在ECMAScript语法允许的源文本中。用于存储和交换ECMAScript源文本的实际编码与该规范无关。不管外部源文本编码如何,符合ECMAScript的实现 将源文本视为与 SourceCharacter 值的 等效序列 相同,每个 SourceCharacter 都是一个Unicode码点。一致性ECMAScript实现不需要执行源文本的任何规范化,或表现为好像正在执行源文本的规范化。
即使用户可能将整个序列视为一个字符,但组合字符序列的组成部分仍被视为单独的Unicode码点。
注意:在字符串,正则表达式,模板和标识符中,任何Unicode码点也可以使用Unicode转义序列表示,这些转义序列明确表示码点的数值。在注释中,这样的转义序列作为注释的一部分被有效地忽略。 ECMAScript在Unicode转义序列上的行为和Java程序语言不同。在Java中,例如在单行注释中的Unicode转义序列 \u000A,它被解释为行终止符(Unicode码点 U+000A 代表 换行(LF))且因此下一个码点不会是该注释的一部分。相似地,在Java程序字符串中的Unicode转义序列 \u000A,它同样被解释为一个行终止符,这在字符串文字中是不允许的,必须用 \n 代替 \u000A 才能使换行符(LF)成为字符串的一部分。 在ECMAScript程序中,注释中的Unicode转义序列不会被解释且因此不能作为注释的终止符。类似的,ECMAScript程序字符串中的Unicode转义序列是字符串的一部分,也不会被解释成行终止符或字符串终止的码点。
抽象操作 CodePointAt 将字符串解释为UTF-16编码的码点序列,正如 String 类型 中定义的那样,并从索引 position 的代码单元开始读取单个码点。
有四种类型的ECMAScript代码:
Global code(全局代码)是被视为ECMAScript 脚本 的源文本。特定 脚本 的全局代码不包含任何被解析为 FunctionDeclaration, FunctionExpression, GeneratorDeclaration, GeneratorExpression, AsyncFunctionDeclaration, AsyncFunctionExpression, AsyncGeneratorDeclaration, AsyncGeneratorExpression, MethodDefinition, ArrowFunction, AsyncArrowFunction, ClassDeclaration, 或 ClassExpression 的源文本。
Eval code 是提供给内置 eval 函数的源文本。更确切地说,如果内置 eval 函数的参数是字符串,它被视为ECMAScript 脚本。eval 函数特定调用的 eval code 是该 脚本 的全局代码部分。
Function code(函数代码)是经过解析的源文本,以提供ECMAScript 函数对象 的 [[ECMAScriptCode]] 和 [[FormalParameters]] 内部插槽的值(请参见函数对象)。特定ECMAScript函数的函数代码不包含任何以下源文本,这些源文本被解析为嵌套的 FunctionDeclaration, FunctionExpression, GeneratorDeclaration, GeneratorExpression, AsyncFunctionDeclaration, AsyncFunctionExpression, AsyncGeneratorDeclaration, AsyncGeneratorExpression, MethodDefinition, ArrowFunction, AsyncArrowFunction, ClassDeclaration, 或 ClassExpression。
此外,如果上面提到的源文本被解析为:
与该声明或表达式的 BindingIdentifier(如果有)匹配的源文本也包含在相应函数的函数代码中。
Module code(模块代码)是源文本,它是作为 ModuleBody 提供的代码。初始化模块时直接评估该代码。特定模块的模块代码不包含任何以下源文本,这些源文本被解析为嵌套的 FunctionDeclaration, FunctionExpression, GeneratorDeclaration, GeneratorExpression, AsyncFunctionDeclaration, AsyncFunctionExpression, AsyncGeneratorDeclaration, AsyncGeneratorExpression, MethodDefinition, ArrowFunction, AsyncArrowFunction, ClassDeclaration, 或 ClassExpression。
注意1:函数代码通常作为以下内容的主体提供:函数定义,箭头函数定义,方法定义,Generator函数定义,Async函数定义,Async Generator函数定义,Async箭头函数定义。函数代码还从函数 构造器,GeneratorFunction 构造器 和 AsyncFunction 构造器 的参数派生。
注意2:在函数代码中包含 BindingIdentifier 的实际效果是,严格模式代码的Early Errors会应用到 BindingIdentifier,即该函数的名称包含其主体中的 "use strict" 指令,即使周围的代码不是严格模式。
非严格模式的ECMAScript代码成为 non-strict code(非严格模式)
The text was updated successfully, but these errors were encountered:
No branches or pull requests
源文本
句法
SourceCharacter ::
任何Unicode码点
ECMAScript代码使用Unicode表示。ECMAScript源文本是一系列码点。所有在 U+0000 ~ U+10FFFF 之间的Unicode码点值,包含代理码点,都可能出现在ECMAScript语法允许的源文本中。用于存储和交换ECMAScript源文本的实际编码与该规范无关。不管外部源文本编码如何,符合ECMAScript的实现 将源文本视为与 SourceCharacter 值的 等效序列 相同,每个 SourceCharacter 都是一个Unicode码点。一致性ECMAScript实现不需要执行源文本的任何规范化,或表现为好像正在执行源文本的规范化。
即使用户可能将整个序列视为一个字符,但组合字符序列的组成部分仍被视为单独的Unicode码点。
静态语义:UTF16Encoding ( cp )
静态语义:UTF16Decode ( lead, trail )
静态语义:CodePointAt ( string, position ) —— codePointAt
抽象操作 CodePointAt 将字符串解释为UTF-16编码的码点序列,正如 String 类型 中定义的那样,并从索引 position 的代码单元开始读取单个码点。
源代码类型
有四种类型的ECMAScript代码:
Global code(全局代码)是被视为ECMAScript 脚本 的源文本。特定 脚本 的全局代码不包含任何被解析为 FunctionDeclaration, FunctionExpression, GeneratorDeclaration, GeneratorExpression, AsyncFunctionDeclaration, AsyncFunctionExpression, AsyncGeneratorDeclaration, AsyncGeneratorExpression, MethodDefinition, ArrowFunction, AsyncArrowFunction, ClassDeclaration, 或 ClassExpression 的源文本。
Eval code 是提供给内置 eval 函数的源文本。更确切地说,如果内置 eval 函数的参数是字符串,它被视为ECMAScript 脚本。eval 函数特定调用的 eval code 是该 脚本 的全局代码部分。
Function code(函数代码)是经过解析的源文本,以提供ECMAScript 函数对象 的 [[ECMAScriptCode]] 和 [[FormalParameters]] 内部插槽的值(请参见函数对象)。特定ECMAScript函数的函数代码不包含任何以下源文本,这些源文本被解析为嵌套的 FunctionDeclaration, FunctionExpression, GeneratorDeclaration, GeneratorExpression, AsyncFunctionDeclaration, AsyncFunctionExpression, AsyncGeneratorDeclaration, AsyncGeneratorExpression, MethodDefinition, ArrowFunction, AsyncArrowFunction, ClassDeclaration, 或 ClassExpression。
此外,如果上面提到的源文本被解析为:
与该声明或表达式的 BindingIdentifier(如果有)匹配的源文本也包含在相应函数的函数代码中。
Module code(模块代码)是源文本,它是作为 ModuleBody 提供的代码。初始化模块时直接评估该代码。特定模块的模块代码不包含任何以下源文本,这些源文本被解析为嵌套的 FunctionDeclaration, FunctionExpression, GeneratorDeclaration, GeneratorExpression, AsyncFunctionDeclaration, AsyncFunctionExpression, AsyncGeneratorDeclaration, AsyncGeneratorExpression, MethodDefinition, ArrowFunction, AsyncArrowFunction, ClassDeclaration, 或 ClassExpression。
严格模式
The text was updated successfully, but these errors were encountered: