错误

2018-06-16 15:49 更新

在 EMCAScript 相关语言构造被求值之时,实现报告大部分错误。早期的错误是一种可以检测和优先报告程序中所有错误内任何构造的求值问题。具体实现一定要在一个程序首次执行评估时报告早期错误。早期错误在 eval 被调用时报告 eval 错误代码,但是在 eval 代码内之优先评估任意构造。

 一个实现要处理任意实例中的以下几种误差作为早期错误 :

  1. 任意语法错误
  2. 试图定义一个有多个相同名字的 get 属性设置或有多个相同名字的 set 属性设置的 对象字面量
  3. 试图定义一个数据属性设置并且 get 或 set 具有相同的名称属性设置的 对象字面量
  4. 错误在正则表达式字面量中没有实现语法扩展
  5. 试图在严格代码模式下定义一个有多个相同名称属性设置数据的 对象字面量
  6. with 语句在严格代码模式下出现
  7. 在严格模式下的函数定义或函数表达的参数列表内不止一次出现标识符值的情况
  8. 使用 return, break 和 continue 不当
  9. 试图在早期已经确定为非引用的任意值上调用 PutValue(例如,执行赋值语句 3 = 4)

 一个实现不应过早处理其他种类的错误,即使编译器可以证实某一构造会在任何情况下产生执行错误。

 一个实现应报告所有的指定错误,但以下情况除外:

  1. 实现可以扩展程序语法和正则表达式或标志语法。使用此功能,当它们遇到一个实现程序语法定义扩展或正则表达式或标记语法时,所有操作(如调用 eval,使用正则表达式字面,或使用 Function 或 RegExp 构造)被获准展现实现定义扩展的行为,而非抛出 SyntaxError 。
  2. 一个实现可以提供超出本规范中所描述的功能范围外的类型,值,对象,属性。这可能会导致构造(如寻找一个在全局作用域内的变量)实现定义的行为而非抛出一个错误(如 ReferenceError)。
  3. 当在 fractionDigits 或 precision 参数是在指定的范围之外,一个实现可以为 toFixed, toExponential, 和 toPrecision 定义 RangeError 以外的其他行为。


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

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号