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 版将当前数组长度的捕获移动到数组索引或新长度值的整数转换之前。然而,如果转换过程具有改变数组长度的副作用,被捕获的长度值可能会失效。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:先前版本没有规定当时间值为 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:在先前版本中,对于模式实参是 global 标志被设置的 RegExp 值的情况,String.prototype.match 和 String.prototype.replace 的规范不正确。先前规范声明,对于每次尝试匹配该模式,如果 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。