Annex E (informative) ECMAScript 2015의 정정 및 명확화 (호환성 영향 가능)

9.1.1.4.14-9.1.1.4.17: 5 및 5.1판은 새로운 전역 선언에 해당하는 전역 객체 프로퍼티가 이미 존재하는지 판단하기 위해 프로퍼티 존재 테스트를 사용했다. ECMAScript 2015는 own 프로퍼티 존재 테스트를 사용한다. 이는 웹 브라우저에서 가장 일반적으로 구현된 방식과 일치한다.

10.4.2.1: 5판은 배열 인덱스 또는 새로운 길이 값의 정수 변환 이전에 현재 배열 길이 캡처로 이동했다. 그러나 변환 과정이 배열 길이를 변경하는 부작용을 가지면 캡처된 길이 값은 무효화될 수 있었다. ECMAScript 2015는 그러한 부작용 발생 가능성 이후에 현재 배열 길이를 캡처해야 함을 명시한다.

21.4.1.31: 이전 판은 0 시간 값 표현으로 +0𝔽 또는 -0𝔽TimeClip 추상 연산이 반환하도록 허용했다. ECMAScript 2015는 항상 +0𝔽 를 반환하도록 명시한다. 이는 2015판에서는 Date 의 시간 값이 관찰 가능하게 -0𝔽 가 아니며 시간 값을 반환하는 메서드는 -0𝔽 를 반환하지 않음을 의미한다.

21.4.1.32: UTC 오프셋 표현이 없으면 로컬 시간대를 사용한다. 5.1판은 빠진 시간대를 "z" 로 해석해야 한다고 잘못 기술했다.

21.4.4.36: 연도가 Date Time String Format (21.4.1.32) 으로 표현될 수 없으면 RangeError 예외가 던져진다. 이전 판은 이 경우의 동작을 명시하지 않았다.

21.4.4.41: 이전 판은 시간 값NaN 일 때 Date.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 의 명세는 global 플래그가 설정된 RegExp 값 패턴 인수에 대해 잘못되었다. 이전 명세는 각 매칭 시도에서 lastIndex 가 변하지 않으면 1 증가해야 한다고 했다. 올바른 동작은 패턴이 빈 문자열과 일치한 경우에만 lastIndex 를 1 증가시키는 것이다.

23.1.3.30: 이전 판은 comparator 가 반환한 NaN 값이 Array.prototype.sort 에 의해 어떻게 해석되는지 명시하지 않았다. ECMAScript 2015는 그 값이 comparator+0𝔽 를 반환한 것처럼 취급된다고 명시한다. 또한 2015판은 comparator 가 반환한 결과에 ToNumber 가 적용된다고 명시한다. 이전 판에서는 Number 값이 아닌 comparator 결과의 영향이 구현 정의였다. 실제로 구현은 ToNumber 를 호출한다.