附录 E (资料性) 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 中规定的 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:在以前的版本中,当 pattern 参数是 global 标志已设置的 RegExp 值时,String.prototype.match 和 String.prototype.replace 的规范存在错误。以前的规范规定,对于每次尝试匹配模式,如果 lastIndex 未改变,则应将其增加 1。正确行为是,仅当模式匹配空 String 时才应将 lastIndex 增加 1。
23.1.3.30:以前的版本没有规定如何解释 comparator 返回的 NaN 值。ECMAScript 2015 规定,此类值按 comparator 返回 +0𝔽 来处理。ECMAScript 2015 还规定对 comparator 返回的结果应用 ToNumber。在以前的版本中,comparator 结果不是 Number 值时的效果是实现定义的。实际中,实现会调用 ToNumber。