?um/p1-90`이 annex에 정의된 ECMAScript 언어 구문과 의미론은 ECMAScript host가 웹 브라우저일 때 요구된다. 이 annex의 내용은 normative이지만 ECMAScript host가 웹 브라우저가 아닌 경우에는 선택 사항이다.
이 annex에 정의된 일부 기능은 이 annex에 명시되어 있고, 일부는 이 문서의 본문에 명시되어 있다.
기능이 본문에 명시된 경우, 그것이 문서에 영향을 미치는 각 지점은 색상 상자 안의 "Normative Optional"이라는 단어로 표시된다. 또한 그 기능이 알고리즘이나 early error 규칙의 특정 문구를 포함하는 경우, 이는 관련 기능을 “host가 지원한다”는 조건에 의해 보호된다. 웹 브라우저는 이러한 모든 기능을 지원해야 한다.
이 annex는 웹 브라우저 ECMAScript host의 여러 legacy 기능과 기타 특성을 설명한다. 이 annex에 명시된 모든 언어 기능과 동작은 하나 이상의 바람직하지 않은 특성을 가지고 있으며 legacy 사용이 없다면 이 명세에서 제거되었을 것이다. 그러나 이러한 기능을 사용하는 기존 웹 페이지가 매우 많기 때문에 웹 브라우저는 이를 계속 지원해야 한다. 이 annex의 명세는 이러한 legacy 기능의 상호 운용 가능한 구현에 대한 요구 사항을 정의한다.
이러한 기능은 핵심 ECMAScript 언어의 일부로 간주되지 않는다. 프로그래머는 새로운 ECMAScript 코드를 작성할 때 이러한 기능과 동작을 사용하거나 그 존재를 가정해서는 안 된다. ECMAScript 구현은 해당 구현이 웹 브라우저의 일부이거나 웹 브라우저가 마주치는 동일한 legacy ECMAScript 코드를 실행해야 하는 경우가 아니라면 이러한 기능을 구현하지 않는 것이 권장된다.
line terminator code point를 포함하는
이 대체 pattern 문법과 의미론은 BMP pattern의 구문과 의미론만 변경한다. 다음 문법 확장은 [UnicodeMode] 매개변수로 매개변수화된 production을 포함한다. 그러나 이러한 확장은 goal symbol에 [UnicodeMode] 매개변수가 존재하는 상태로 파싱할 때 인식되는 Unicode pattern의 구문을 변경하지 않는다.
같은 left-hand side가 [+UnicodeMode]와 [~UnicodeMode] guard 모두와 함께 나타나는 경우, 이는 disambiguation priority를 제어하기 위한 것이다.
추가로, 다음 production에 대한 규칙은 highlighted text의 추가로 수정된다:
\ U+005C (REVERSE SOLIDUS)를 포함하는 다음 두 규칙은
또한 다음 규칙이
\ U+005C (REVERSE SOLIDUS)를 포함하는 \c로부터만 도달할 수 있다.The abstract operation CharacterRangeOrUnion takes arguments regexpRecord (a
ECMAScript host가 웹 브라우저일 때 표준 built-in 객체의 다음 추가 프로퍼티가 정의된다.
| Intrinsic 이름 | 전역 이름 | ECMAScript 언어 연관 |
|---|---|---|
|
|
escape
|
escape 함수( |
|
|
unescape
|
unescape 함수( |
이 함수는
numeric value가 0x00FF 이하인 code unit을 대체할 때는 %xx 형식의 두 자리 escape sequence가 사용된다. numeric value가 0x00FF보다 strictly greater인 code unit을 대체할 때는 %uxxxx 형식의 네 자리 escape sequence가 사용된다.
이는 %escape% intrinsic object이다.
호출될 때 다음 단계를 수행한다:
이 인코딩은 부분적으로 RFC 1738에 설명된 인코딩에 기반하지만, 이 표준에 명시된 전체 인코딩은 RFC 1738의 내용과 무관하게 위에 설명되어 있다. 이 인코딩은 RFC 3986에 의해 RFC 1738에 이루어진 변경을 반영하지 않는다.
이 함수는 escape 함수에 의해 도입될 수 있는 종류의 각 escape sequence가 그것이 나타내는 code unit으로 대체된 String 값의 새로운 버전을 계산한다.
이는 %unescape% intrinsic object이다.
호출될 때 다음 단계를 수행한다:
이 메서드는
호출될 때 다음 단계를 수행한다:
이 메서드는 의도적으로 generic하다;
이 메서드는 호출될 때 다음 단계를 수행한다:
The abstract operation CreateHTML takes arguments contents (an ECMAScript language value), tag (a String), attribute (a String), and attrValue (an ECMAScript language value) and returns either a
이 메서드는 호출될 때 다음 단계를 수행한다:
이 메서드는 호출될 때 다음 단계를 수행한다:
이 메서드는 호출될 때 다음 단계를 수행한다:
이 메서드는 호출될 때 다음 단계를 수행한다:
이 메서드는 호출될 때 다음 단계를 수행한다:
이 메서드는 호출될 때 다음 단계를 수행한다:
이 메서드는 호출될 때 다음 단계를 수행한다:
이 메서드는 호출될 때 다음 단계를 수행한다:
이 메서드는 호출될 때 다음 단계를 수행한다:
이 메서드는 호출될 때 다음 단계를 수행한다:
이 메서드는 호출될 때 다음 단계를 수행한다:
이 메서드는 호출될 때 다음 단계를 수행한다:
getFullYear 메서드는 “year 2000 problem”을 피하기 때문에 거의 모든 목적에서 선호된다.
이 메서드는 호출될 때 다음 단계를 수행한다:
setFullYear 메서드는 “year 2000 problem”을 피하기 때문에 거의 모든 목적에서 선호된다.
이 메서드는 호출될 때 다음 단계를 수행한다:
toUTCString 메서드가 선호된다. 이 메서드는 주로 오래된 코드와의 호환성을 위해 제공된다.
이 메서드는 호출될 때 다음 단계를 수행한다:
이 메서드는
ECMAScript 2015 이전에는
ECMAScript 2015 이전에는 ECMAScript 명세가
함수가 선언되고 단일 block 안에서만 참조된다.
var declaration이 아닌 f의 다른 선언이 g의 function code 안에 발생하지 않는다.
함수가 선언되고 단일
var declaration이 아닌 f의 다른 선언이 g의 function code 안에 발생하지 않는다.
함수가 선언되고 단일 block 안에서 사용될 수 있지만, 이후 block 안에서도 참조된다.
var declaration이 아닌 f의 다른 선언이 g의 function code 안에 발생하지 않는다.
첫 번째 사용 사례는 ECMAScript 2015가 제공하는
두 번째 및 세 번째 사용 사례에 대한 ECMAScript 2015 상호 운용성은
ECMAScript 구현에 diagnostic warning message를 보고하는 메커니즘이 있다면, 이러한 compatibility semantics가 적용되고 non-compatibility semantics와 관찰 가능한 차이를 도입하는
이 기능은 다음 지점에서 특별한 의미론을 포함한다:
다음은
이 production은
이 기능에서, var declaration을 포함할 수 있다. 이는
Runtime에서 그러한 binding은 VariableDeclarationEnvironment 안에 instantiate된다. 이들은 var declaration의 var binding이 아니라 대응하는 catch parameter에 할당한다.
이 수정된 동작은 var 및 function declaration에도 적용된다. 이 변경은
다음은
이 production은
[[IsHTMLDDA]] internal slot은 host-defined 객체에 존재할 수 있다. [[IsHTMLDDA]] 내부 슬롯을 가진 객체는 typeof 연산자
[[IsHTMLDDA]] 내부 슬롯을 가진 객체는 이 명세에 의해 생성되지 않는다. 그러나 웹 브라우저의 document.all 객체는 웹 호환성을 위해 존재하는 이 슬롯을 가진 host-defined document.all을 제외하고 이를 만들어서는 안 된다.
이 기능은 다음 지점에서 특별한 의미론을 포함한다:
typeof의 평가 의미론 안의 단계 function call(
assignment target이 = 또는 ??=, &&=, ||=)에는 적용되지 않는다.