new 연산자super 키워드? : ), )if 문do-while 문while 문for 문for-in, for-of, for-await-of 문continue 문break 문return 문with 문switch 문throw 문try 문debugger 문?um/p1-90`ECMAScript 소스 텍스트는 유니코드 코드 포인트들의 시퀀스이다. ECMAScript 문법이 허용하는 곳에서는, 서로게이트 코드 포인트를 포함하여 U+0000부터 U+10FFFF까지의 모든 유니코드 코드 포인트 값이 ECMAScript 소스 텍스트에 나타날 수 있다. ECMAScript 소스 텍스트를 저장하고 교환하는 데 사용되는 실제 인코딩은 이 명세와 관련이 없다. 외부 소스 텍스트 인코딩과 관계없이, 적합한 ECMAScript 구현은 소스 텍스트를 마치 동등한
결합 문자 시퀀스의 구성 요소들은, 사용자가 전체 시퀀스를 하나의 문자로 생각할 수 있더라도, 각각 개별 유니코드 코드 포인트로 취급된다.
문자열 리터럴, 정규식 리터럴, 템플릿 리터럴, 식별자 안에서는, 임의의 유니코드 코드 포인트를 그 코드 포인트의 수치 값을 명시적으로 표현하는 유니코드 이스케이프 시퀀스를 사용해 나타낼 수도 있다. 주석 안에서 그러한 이스케이프 시퀀스는 사실상 주석의 일부로 무시된다.
ECMAScript는 유니코드 이스케이프 시퀀스의 동작에서 자바 프로그래밍 언어와 다르다. 예를 들어 자바 프로그램에서 유니코드 이스케이프 시퀀스 \u000A가 단일 행 주석 안에 나타나면, 그것은 줄 종결자(유니코드 코드 포인트 U+000A는 LINE FEED (LF)이다)로 해석되며, 따라서 다음 코드 포인트는 더 이상 주석의 일부가 아니다. 마찬가지로 자바 프로그램에서 유니코드 이스케이프 시퀀스 \u000A가 문자열 리터럴 안에 나타나면, 역시 줄 종결자로 해석되는데, 이는 문자열 리터럴 안에서는 허용되지 않는다—문자열 리터럴 값의 일부로 LINE FEED (LF)를 포함시키려면 \u000A 대신 \n을 써야 한다. ECMAScript 프로그램에서는 주석 안에 나타난 유니코드 이스케이프 시퀀스는 결코 해석되지 않으므로 주석의 종료에 기여할 수 없다. 마찬가지로 ECMAScript 프로그램에서 문자열 리터럴 안에 나타난 유니코드 이스케이프 시퀀스는 항상 그 리터럴의 일부에 기여하며, 결코 줄 종결자나 문자열 리터럴을 종료시킬 수 있는 코드 포인트로 해석되지 않는다.
The abstract operation UTF16EncodeCodePoint takes argument cp (a Unicode code point) and returns a String. It performs the following steps when called:
The abstract operation CodePointsToString takes argument text (a sequence of Unicode code points) and returns a String. 이것은
The abstract operation UTF16SurrogatePairToCodePoint takes arguments lead (a code unit) and trail (a code unit) and returns a code point. UTF-16 서로게이트 쌍을 이루는 두 코드 단위는 하나의 코드 포인트로 변환된다. It performs the following steps when called:
The abstract operation CodePointAt takes arguments string (a String) and position (a non-negative integer) and returns a
The abstract operation StringToCodePoints takes argument string (a String) and returns a
The abstract operation ParseText takes arguments sourceText (a String or a sequence of Unicode code points) and goalSymbol (a nonterminal in one of the ECMAScript grammars) and returns a Parse Node or a non-empty
특정 지점에 early error가 있고, 더 뒤의 지점에 syntax error도 있는 텍스트를 생각해 보자. 먼저 파싱 패스를 수행한 다음
ECMAScript 코드에는 네 가지 종류가 있다:
eval 함수에 제공되는 소스 텍스트이다. 더 정확히 말하면, 내장 eval 함수의 매개변수가 String이면, 그것은 ECMAScript eval 호출에 대한 eval 코드는 그 함수 코드는 ECMAScript 함수 객체의 [[ECMAScriptCode]] 및 [[FormalParameters]] 내부 슬롯(참조:
추가로, 위에서 언급한 소스 텍스트가 다음으로 파싱되는 경우:
그러면 그 선언 또는 표현식의
지시어 프롤로그는
Use Strict 지시어는 "use strict" 또는 'use strict' 중 하나인 것이다.
ECMAScript 구문 단위는 unrestricted 또는 strict mode 구문 및 의미론(
eval 호출이 strict mode 코드 안에 포함된 direct eval이면 strict mode 코드이다.
strict mode 코드가 아닌 ECMAScript 코드는 non-strict 코드라고 한다.
The abstract operation IsStrict takes argument node (a Parse Node) and returns a Boolean. It performs the following steps when called:
ECMAScript 구현은 평가 동작이