Annex E (informative) ECMAScript 2015 中可能影响兼容性的修正和澄清
9.1.1.4.14-9.1.1.4.17 第 5 版和第 5.1 版使用属性存在性测试来确定与新的全局声明对应的全局对象属性是否已经存在。ECMAScript 2015 使用自有属性存在性测试。这对应于 Web 浏览器最常实现的行为。
10.4.2.1:第 5 版将当前数组长度的捕获移到了数组索引或新 length 值的整数转换之前。然而,如果转换过程具有改变数组长度的副作用,则捕获的 length 值可能变得无效。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 中规定的 Date Time String Format 表示,则抛出 RangeError 异常。先前版本没有规定这种情况的行为。
21.4.4.41:先前版本没有规定当时间值为 NaN 时 Date.prototype.toString 返回的值。ECMAScript 2015 规定结果为 String 值 "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.match 和 String.prototype.replace 的规范在模式实参是设置了 global 标志的 RegExp 值的情况下是不正确的。先前规范规定,对于每次尝试匹配模式,如果 lastIndex 没有变化,则应将其递增 1。正确行为是,只有当模式匹配空 String 时,才应将 lastIndex 递增 1。
23.1.3.30:先前版本没有规定 Array.prototype.sort 如何解释 comparator 返回的 NaN 值。ECMAScript 2015 规定,这样的值被视为 comparator 返回了 +0𝔽。ECMAScript 2015 还规定,对 comparator 返回的结果应用 ToNumber。在先前版本中,不是 Number 值的 comparator 结果的效果是实现定义的。实践中,实现会调用 ToNumber。