?
u
m
/
p
1-9
0
`
yield
와 await
는 문법상
let
await 0;
yield
, await
를 제외한 어느 The syntax-directed operation UNKNOWN takes UNPARSEABLE ARGUMENTS. It is defined piecewise over the following productions:
비 strict 코드에서 키워드 yield
는 식별자로 사용할 수 있다. yield
바인딩을
다음 생성물 인스턴스를 처리할 때
this
키워드(The this
Keyword)false
이면 true
이면 배열 요소는 목록의 시작·중간·끝에서 생략(elide)될 수 있다. 요소 목록에서 쉼표 앞에
The syntax-directed operation UNKNOWN takes UNPARSEABLE ARGUMENTS. It is defined piecewise over the following productions:
객체 이니셜라이저는 리터럴과 유사한 형태로 객체 초기화를 기술하는 표현식이다. 중괄호로 둘러싸인 0 개 이상 (
특정 문맥에서
실제 객체 이니셜라이저를 기술하는 것 외에도
이 생성물은
PropertyNameList 가 반환한
The syntax-directed operation UNKNOWN takes UNPARSEABLE ARGUMENTS. It is defined piecewise over the following productions:
The syntax-directed operation UNKNOWN takes UNPARSEABLE ARGUMENTS. It is defined piecewise over the following productions:
The syntax-directed operation UNKNOWN takes UNPARSEABLE ARGUMENTS. It is defined piecewise over the following productions:
The abstract operation UNKNOWN takes UNPARSEABLE ARGUMENTS. 인수가 유효한 정규 표현식 리터럴인지 판정한다. It performs the following steps when called:
d
, g
, i
, m
, s
, u
, v
, y
이외 코드 포인트를 포함하거나 동일 코드 포인트를 중복 포함하면 u
포함하면 u = v
포함하면 v = The syntax-directed operation UNKNOWN takes UNPARSEABLE ARGUMENTS. It is defined piecewise over the following productions:
The abstract operation UNKNOWN takes UNPARSEABLE ARGUMENTS. It performs the following steps when called:
raw 가
The abstract operation GetTemplateObject takes argument templateLiteral (Parse Node) and returns Array. It performs the following steps when called:
템플릿 객체 생성은
한
향후 판에서 템플릿 객체의 비열거(non-enumerable) 프로퍼티가 추가로 정의될 수 있다.
The syntax-directed operation UNKNOWN takes UNPARSEABLE ARGUMENTS. It is defined piecewise over the following productions:
+
연산자보다 String.prototype.concat
과 유사하다.
String.prototype.concat
과 유사.
String.prototype.concat
과 유사.
이 알고리즘은 delete
, typeof
같은 연산자가 괄호 친 표현식에 적용될 수 있도록 하는 주된 동기다.
다음 생성물 인스턴스를 처리할 때
이 생성물은 아래 코드에 대해 자동 세미콜론 삽입 규칙(
a?.b
`c`
이는 선택적 체이닝이 없는 유사 코드와의 일관성을 유지하려는 목적이다:
a.b
`c`
위 코드는 유효한 문장이며 자동 세미콜론 삽입이 적용되지 않는다.
프로퍼티는 이름으로 접근하며, 점 표기법(dot notation)을 사용할 수 있다:
또는 대괄호 표기법(bracket notation)을 사용할 수 있다:
점 표기법은 다음 구문 변환으로 설명된다:
는 동작상 다음과 동일하다:
비슷하게
도 동작상 다음과 동일하다:
여기서 <identifier-name-string> 는
The abstract operation EvaluatePropertyAccessWithExpressionKey takes arguments baseValue (an ECMAScript language value), expression (an
a[b] = c
의 경우 c
평가 이후에 수행된다.The abstract operation EvaluatePropertyAccessWithIdentifierKey takes arguments baseValue (an ECMAScript language value), identifierName (an
new
연산자(The new
Operator)The abstract operation EvaluateNew takes arguments constructExpr (a
단계
The abstract operation EvaluateCall takes arguments func (an ECMAScript language value), ref (an ECMAScript language value or a
super
키워드(The super
Keyword)super[b] = c
의 경우 c
평가 이후 수행된다.The abstract operation GetSuperConstructor takes no arguments and returns
The abstract operation MakeSuperPropertyReference takes arguments actualThis (an ECMAScript language value), propertyKey (an ECMAScript language value), and strict (a Boolean) and returns
인자 목록의 평가 결과는 값들의
The syntax-directed operation UNKNOWN takes UNPARSEABLE ARGUMENTS. It is defined piecewise over the following productions:
?.
토큰으로 시작한다.The syntax-directed operation UNKNOWN takes UNPARSEABLE ARGUMENTS. It is defined piecewise over the following productions:
The abstract operation EvaluateImportCall takes argument specifierExpression (a Parse Node) and optional argument optionsExpression (a Parse Node) and returns 정상 완료 시 Promise 또는
The abstract operation ContinueDynamicImport takes arguments promiseCapability (a import()
태그드 템플릿은 호출 인자가
The host-defined abstract operation HostGetImportMetaProperties takes argument moduleRecord (a Module import.meta
로부터 반환되는 객체에 대한
HostGetImportMetaProperties 의 기본 구현은 새 빈
The host-defined abstract operation HostFinalizeImportMeta takes arguments importMeta (an Object) and moduleRecord (a Module import.meta
로부터 반환되는 객체를 ECMAScript 코드에 노출하기 전에 추가 작업을 수행할 수 있게 한다.
대부분
HostFinalizeImportMeta 의 기본 구현은
delete
연산자(The delete
Operator)
파생된
이고
마지막 규칙은 delete (((foo)))
같은 표현식이 첫 번째 규칙의 재귀 적용으로 인해 조기 오류를 발생함을 의미한다.
delete
연산자가 strict 모드 코드 안에 나타나고 그 delete
가 발생하고 삭제하려는 프로퍼티가 { [[Configurable]]:
void
연산자(The void
Operator)값을 사용하지 않더라도 관찰 가능한 부수효과가 있을 수 있으므로
typeof
연산자(The typeof
Operator)+
연산자(Unary +
Operator)단항 + 연산자는 피연산자를
-
연산자(Unary -
Operator)단항 -
연산자는 피연산자를 수치 값으로 변환한 뒤 부호를 반전한다.
~
)!
)*
연산자는 피연산자의 곱(product)을 생성하는 곱셈을 수행한다./
연산자는 피연산자의 몫(quotient)을 생성하는 나눗셈을 수행한다.%
연산자는 암묵적 나눗셈에서 피연산자의 나머지(remainder)를 구한다.+
) (The Addition Operator)덧셈 연산자는 문자열 결합 또는 수치 덧셈을 수행한다.
-
) (The Subtraction Operator)-
연산자는 피연산자의 차(difference)를 생성하는 뺄셈을 수행한다.
<<
) (The Left Shift Operator)왼쪽 피연산자를 오른쪽 피연산자가 지정한 비트 수만큼 비트 왼쪽 시프트한다.
>>
) (The Signed Right Shift Operator)왼쪽 피연산자를 오른쪽 피연산자가 지정한 비트 수만큼 부호 확장(bit sign-filling)하며 오른쪽 시프트한다.
>>>
) (The Unsigned Right Shift Operator)왼쪽 피연산자를 오른쪽 피연산자가 지정한 비트 수만큼 0 으로 채우며 오른쪽 시프트한다.
관계 연산자 평가 결과는 항상
[In] 문법 매개변수는 관계 표현식에서의 in
연산자를 for
문의 in
연산자와 혼동하지 않도록 필요하다.
The abstract operation InstanceofOperator takes arguments V (an ECMAScript language value) and target (an ECMAScript language value) and returns Boolean 을 담는 정상 완료 또는
instanceof
의미론을 사용한다.
동등 연산자 평가 결과는 항상
위 동등성 정의에 따라:
\`${a}\` == \`${b}\`
.
+a == +b
.
!a == !b
.
동등 연산자는 다음 불변식을 유지한다:
A != B
는 !(A == B)
와 동등하다.
A == B
는 (평가 순서 제외) B == A
와 동등하다.
동등 연산자는 항상 추이적(transitive)이지는 않다. 예를 들어 동일한 String 값을 나타내는 서로 다른 두 String 객체가 있을 수 있고, 각 객체는 ==
연산자에 의해 그 String 값과는 같지만 서로는 같지 않을 수 있다. 예:
new String("a") == "a"
및 "a" == new String("a")
는 둘 다 new String("a") == new String("a")
는 문자열 비교는 코드 유닛 값 시퀀스의 단순 동등성 검사만을 사용한다. 유니코드 명세에 정의된 더 복잡하고 의미 지향적인 문자/문자열 동등성 또는
&&
또는 ||
연산자가 생성하는 값은 반드시
? :
)ECMAScript 의
assignmentOpText | opText |
---|---|
**= | ** |
*= | * |
/= | / |
%= | % |
+= | + |
-= | - |
<<= | << |
>>= | >> |
>>>= | >>> |
&= | & |
^= | ^ |
|= | | |
이 표현식이 strict 모드 코드 내에 나타날 때 단계
The abstract operation ApplyStringOrNumericBinaryOperator takes arguments lVal (an ECMAScript language value), opText (**
, *
, /
, %
, +
, -
, <<
, >>
, >>>
, &
, ^
, or |
), and rVal (an ECMAScript language value) and returns 정상 완료 시 String, BigInt 또는 Number 중 하나 또는
+
이면**
이면 ? /
이면 ? %
이면 ? >>>
이면 ? opText | operation |
---|---|
* | |
+ | |
- | |
<< | |
>> | |
& | |
^ | |
| | |
opText | operation |
---|---|
** | |
* | |
/ | |
% | |
+ | |
- | |
<< | |
>> | |
>>> | |
& | |
^ | |
| | |
단계
단계
The abstract operation EvaluateStringOrNumericBinaryExpression takes arguments leftOperand (a Parse Node), opText (a sequence of Unicode code points), and rightOperand (a Parse Node) and returns 정상 완료 시 String, BigInt 또는 Number 중 하나 또는
특정 상황에서 다음 생성물 인스턴스를 처리할 때
The syntax-directed operation UNKNOWN takes UNPARSEABLE ARGUMENTS. It is defined piecewise over the following productions:
The syntax-directed operation UNKNOWN takes UNPARSEABLE ARGUMENTS. 모든 구조 분해된
The syntax-directed operation UNKNOWN takes UNPARSEABLE ARGUMENTS. It is defined piecewise over the following productions:
The syntax-directed operation UNKNOWN takes UNPARSEABLE ARGUMENTS. It is defined piecewise over the following productions:
The syntax-directed operation UNKNOWN takes UNPARSEABLE ARGUMENTS. It is defined piecewise over the following productions:
,
)값을 사용하지 않더라도 관찰 가능한 부수 효과가 있을 수 있으므로