Annex E (informative) 호환성 영향 가능성이 있는 ECMAScript 2015의 수정 및 명확화
9.1.1.4.14-9.1.1.4.17 Edition 5 및 5.1은 새로운 global declaration에 대응하는 global object 프로퍼티가 이미 존재하는지 판단하기 위해 property existence test를 사용했다. ECMAScript 2015는 own property existence test를 사용한다. 이는 웹 브라우저에서 가장 일반적으로 구현되어 온 것과 일치한다.
10.4.2.1: 5th Edition은 현재 array length의 캡처를 array index 또는 새 length 값의 integer conversion 이전으로 이동했다. 그러나 conversion 과정이 array length를 변경하는 side-effect를 가지면 캡처된 length 값은 invalid가 될 수 있었다. ECMAScript 2015는 그러한 side-effect의 가능한 발생 이후에 현재 array length가 캡처되어야 한다고 지정한다.
21.4.1.31: 이전 edition은 TimeClip 추상 연산이 0 time value의 표현으로 +0𝔽 또는 -0𝔽 중 하나를 반환하는 것을 허용했다. ECMAScript 2015는 +0𝔽가 항상 반환된다고 지정한다. 이는 ECMAScript 2015에서 Date의 time value가 관찰 가능하게 -0𝔽가 결코 아니며 time value를 반환하는 메서드도 결코 -0𝔽를 반환하지 않는다는 뜻이다.
21.4.1.32: UTC offset 표현이 없으면 local time zone이 사용된다. Edition 5.1은 누락된 time zone이 "z"로 해석되어야 한다고 잘못 명시했다.
21.4.4.36: 연도를 21.4.1.32에 지정된 Date Time String Format을 사용하여 표현할 수 없으면 RangeError 예외가 던져진다. 이전 edition은 그 경우의 동작을 지정하지 않았다.
21.4.4.41: 이전 edition은 time value가 NaN일 때 Date.prototype.toString이 반환하는 값을 지정하지 않았다. ECMAScript 2015는 결과를 String 값 "Invalid Date"로 지정한다.
22.2.4.1, 22.2.6.13.1: RegExp instance의 "source" 프로퍼티 값 안의 모든 LineTerminator code point는 escape sequence를 사용하여 표현되어야 한다. Edition 5.1은 /만 escape할 것을 요구했다.
22.2.6.8, 22.2.6.11: 이전 edition에서 String.prototype.match 및 String.prototype.replace의 명세는 pattern 인자가 global flag가 설정된 RegExp 값인 경우에 대해 올바르지 않았다. 이전 명세는 pattern을 match하려는 각 시도마다 lastIndex가 변경되지 않으면 1만큼 증가해야 한다고 명시했다. 올바른 동작은 pattern이 empty String과 match된 경우에만 lastIndex가 1만큼 증가해야 한다는 것이다.
23.1.3.30: 이전 edition은 Array.prototype.sort에서 comparator가 반환한 NaN 값이 어떻게 해석되는지 지정하지 않았다. ECMAScript 2015는 그러한 값이 comparator에서 +0𝔽가 반환된 것처럼 취급된다고 지정한다. ECMAScript 2015는 또한 comparator가 반환한 결과에 ToNumber가 적용된다고 지정한다. 이전 edition에서는 Number 값이 아닌 comparator 결과의 효과가 implementation-defined였다. 실제로 구현은 ToNumber를 호출한다.