페이지 표시 설정

부속서 E (참고) 호환성에 영향을 줄 수 있는 ECMAScript 2015의 수정 및 명확화

9.1.1.4.14-9.1.1.4.17 Edition 5 및 5.1은 새로운 전역 선언에 대응하는 전역 객체 프로퍼티가 이미 존재하는지 판단하기 위해 프로퍼티 존재 검사를 사용했습니다. ECMAScript 2015는 자체 프로퍼티 존재 검사를 사용합니다. 이는 웹 브라우저에서 가장 일반적으로 구현된 방식에 대응합니다.

10.4.2.1: 5th Edition은 배열 인덱스 또는 새 길이 값의 정수 변환 전에 현재 배열 길이를 캡처하도록 변경했습니다. 그러나 변환 과정에서 배열 길이를 변경하는 부수 효과가 발생하면 캡처한 길이 값이 무효가 될 수 있었습니다. ECMAScript 2015는 그러한 부수 효과가 발생할 수 있는 시점 이후에 현재 배열 길이를 캡처해야 한다고 지정합니다.

21.4.1.31: 이전 판에서는 TimeClip 추상 연산이 0 시간 값의 표현으로 +0𝔽 또는 -0𝔽 중 하나를 반환하도록 허용했습니다. ECMAScript 2015는 +0𝔽이 항상 반환되도록 지정합니다. 이는 ECMAScript 2015에서 Date의 시간 값이 관찰 가능하게 -0𝔽이 되는 일이 없으며 시간 값을 반환하는 메서드도 절대 -0𝔽을 반환하지 않는다는 의미입니다.

21.4.1.32: UTC 오프셋 표현이 없으면 로컬 시간대를 사용합니다. Edition 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 코드 포인트는 이스케이프 시퀀스를 사용하여 표현해야 합니다. Edition 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 값을 Array.prototype.sort가 어떻게 해석하는지 지정하지 않았습니다. ECMAScript 2015는 그러한 값을 comparator가 +0𝔽을 반환한 것처럼 취급하도록 지정합니다. ECMAScript 2015는 comparator가 반환한 결과에 ToNumber를 적용하도록 지정하기도 합니다. 이전 판에서는 Number 값이 아닌 comparator 결과의 효과가 구현체 정의였습니다. 실제 구현체는 ToNumber를 호출합니다.