可执行代码类型

2018-06-16 15:15 更新

一共有 3 种 ECMA 脚本可执行代码:

  • 全局代码 是指被作为 ECMA 脚本 程序 处理的源代码文本。一个特定 程序 的全局代码不包括作为 函数体 被解析的源代码文本。
  • Eval 代码 是指提供给 eval 内置函数的源代码文本。更精确地说,如果传递给 eval 内置函数的参数为一个字符串,该字符串将被作为 ECMA 脚本 程序 进行处理。在特定的一次对 eval 的调用过程中,eval 代码作为该 程序 的 #global-code 部分。
  • 函数代码 是指作为 函数体 被解析的源代码文本。一个 函数体 的 函数代码 不包括作为其嵌套函数的 函数体 被解析的源代码文本。 函数代码 同时还特指 以构造器方式调用 Function 内置对象 时所提供的源代码文本。更精确地说,调用 Function 构造器时传递的最后一个参数将被转换为字符串并作为 函数体 使用。如果调用 Function 构造器时,传递了一个以上的参数,除最后一个参数以外的其他参数都将转换为字符串,并以逗号作为分隔符连接在一起成为一个字符串,该字符串被解析为 形参列表 供由最后一个参数定义的 函数体 使用。初始化 Function 对象时所提供的函数代码,并不包括作为其嵌套函数的 函数体 被解析的源代码文本。

严格模式下的代码

 一个 ECMA 脚本程序的语法单元可以使用非严格或严格模式下的语法及语义进行处理。当使用严格模式进行处理时,以上三种代码将被称为严格全局代码、严格 eval 代码和严格函数代码。当符合以下条件时,代码将被解析为严格模式下的代码:

  • 当 全局代码 以指令序言开始,且该指令序言包含一个使用严格模式的指令序言(参考 14.1 章 )时,即为严格全局代码。
  • 当 全局代码 以指令序言开始,且该指令序言包含一个使用严格模式的指令序言时;或者在 严格模式下的代码 中通过直接调用 eval 函数 (参考 15.1.2.1.1 章 )时,即为严格 eval 代码。
  • 当一个 函数声明 、 函数表达式 或 函数赋值 访问器处在一段 严格模式下的代码 中,或其函数代码以指令序言开始,且该指令序言包含一个使用严格模式的指令序言时,该函数代码 即为严格函数代码。
  • 当调用内置的 Function 构造器时,如果最后一个参数所表达的字符串在作为 函数体 处理时以指令序言开始,且该指令序言包含一个使用严格模式的指令序言,则该 函数代码即为严格函数代码。


以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号