Annex E (informative) ECMAScript 2015 中的更正与澄清(可能的兼容性影响)

9.1.1.4.14-9.1.1.4.17:第 5 与 5.1 版使用属性存在性测试来判断与新全局声明对应的全局对象属性是否已存在。ECMAScript 2015 使用自有属性存在性测试。这与多数浏览器实现最常见的行为一致。

10.4.2.1:第 5 版将捕获当前数组长度的操作移至数组索引或新长度值进行整数转换之前。然而,如果转换过程有改变数组长度的副作用,捕获的长度可能失效。ECMAScript 2015 规定当前数组长度必须在此类副作用可能发生之后捕获。

21.4.1.31:之前的版本允许 TimeClip 抽象操作返回 +0𝔽-0𝔽 作为 0 时间值的表示。ECMAScript 2015 规定始终返回 +0𝔽。这意味着在 ECMAScript 2015 中 Date 的时间值不会可观察到 -0𝔽,返回时间值的方法也不会返回 -0𝔽

21.4.1.32:如果不存在 UTC 偏移表示,则使用本地时区。第 5.1 版错误地说缺失的时区应解释为 "z"

21.4.4.36:若年份无法用 21.4.1.32 指定的日期时间字符串格式表示,则抛出 RangeError。之前版本未指定该情况的行为。

21.4.4.41:之前版本未指定当时间值NaNDate.prototype.toString 返回的值。ECMAScript 2015 规定结果为字符串 "Invalid Date"

22.2.4.1, 22.2.6.13.1:RegExp 实例 "source" 属性值中的任何 LineTerminator 代码点必须使用转义序列表示。第 5.1 版仅要求转义 /

22.2.6.8, 22.2.6.11:在之前版本中,String.prototype.matchString.prototype.replace 对于 pattern 参数为设置了 global 标志的 RegExp 值的情况的规范不正确。旧规范指出每次尝试匹配模式时,如果 lastIndex 未改变,则应加 1。正确行为是只有当模式匹配到空字符串时才加 1。

23.1.3.30:之前版本未指定 Array.prototype.sort 如何解释由 comparator 返回的 NaN 值。ECMAScript 2015 规定此类值视为 comparator 返回 +0𝔽。还规定对 comparator 返回的结果应用 ToNumber。之前版本对结果非 Number 的情况是实现自定。实践中实现会调用 ToNumber