?um/p1-90`yield와 await는 문법상
let
await 0;
yield 또는 await를 제외한 어떤 The syntax-directed operation StringValue takes no arguments and returns a String. It is defined piecewise over the following productions:
yield를 식별자로 사용할 수 있다. yield의 바인딩을 해석한다. Early Error 제한은 이런 평가가 오직
production의 인스턴스를 처리할 때
this 키워드false이면, true이면, 배열 요소는 요소 목록의 처음, 중간, 또는 끝에서 생략될 수 있다. 요소 목록에서 콤마 앞에
The syntax-directed operation ArrayAccumulation takes arguments array (an Array) and nextIndex (an integer) and returns either a
객체 초기자는 리터럴과 유사한 형태로 작성된, Object의 초기화를 기술하는 표현식이다. 이것은 중괄호로 둘러싸인, 0개 이상의 프로퍼티 키와 연관된 값의 쌍 목록이다. 값은 리터럴일 필요가 없으며; 객체 초기자가 평가될 때마다 각각 평가된다.
특정 문맥에서
실제 객체 초기자를 기술하는 것 외에도
이 production은
The syntax-directed operation IsComputedPropertyKey takes no arguments and returns a Boolean. It is defined piecewise over the following productions:
The syntax-directed operation PropertyDefinitionNodes takes no arguments and returns a
The syntax-directed operation PropertyNameList takes no arguments and returns a
The syntax-directed operation PropertyDefinitionEvaluation takes argument object (an Object) and returns either a
The abstract operation IsValidRegularExpressionLiteral takes argument literal (a
d, g, i, m, s, u, v, y 이외의 코드 포인트를 하나라도 포함하면 u를 포함하면 u를 v를 포함하면 v를 The syntax-directed operation TemplateStrings takes argument raw (a Boolean) and returns a
The abstract operation TemplateString takes arguments templateToken (a
이 연산은 raw가
The abstract operation GetTemplateObject takes argument templateLiteral (a Parse Node) and returns an Array. It performs the following steps when called:
템플릿 객체의 생성은
이 명세의 미래 판은 템플릿 객체의 추가적인 non-enumerable 프로퍼티를 정의할 수 있다.
The syntax-directed operation SubstitutionEvaluation takes no arguments and returns either a
+ 연산자라기보다 String.prototype.concat과 같다.
+ 연산자라기보다 String.prototype.concat과 같다.
+ 연산자라기보다 String.prototype.concat과 같다.
이 알고리즘은 delete와 typeof 같은 연산자가 괄호로 둘러싸인 표현식에 적용될 수 있도록 하기 위해서이다.
production의 인스턴스를 처리할 때
이 production은 자동 세미콜론 삽입 규칙(
a?.b
`c`
그 결과 이것이 두 개의 유효한 문장으로 해석되지 않도록 하기 위함이다. 목적은 optional chaining이 없는 유사한 코드와의 일관성을 유지하는 것이다:
a.b
`c`
이것은 유효한 문장이며 자동 세미콜론 삽입이 적용되지 않는다.
프로퍼티는 이름으로 접근되며, 점 표기법을 사용하거나:
또는 대괄호 표기법을 사용한다:
점 표기법은 다음 구문 변환으로 설명된다:
은 동작상 다음과 동일하다
그리고 마찬가지로
은 동작상 다음과 동일하다
여기서 <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 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 키워드super[b] = c의 경우에는 c의 평가 이후까지 수행되지 않는다.The abstract operation GetSuperConstructor takes no arguments and returns an Object or
The abstract operation MakeSuperPropertyReference takes arguments actualThis (an ECMAScript language value), propertyKey (an ECMAScript language value), and strict (a Boolean) and returns a
인수 목록의 평가는 값들의
The syntax-directed operation ArgumentListEvaluation takes no arguments and returns either a
?.로 시작한다.The syntax-directed operation ChainEvaluation takes arguments baseValue (an ECMAScript language value) and baseReference (an ECMAScript language value or a
The abstract operation EvaluateImportCall takes argument specifierExpression (a Parse Node) and optional argument optionsExpression (a Parse Node) and returns either a
The abstract operation ContinueDynamicImport takes arguments promiseCapability (a PromiseCapability 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에서 반환되는 객체를 준비하기 위해 특별한 연산을 수행할 수 있게 한다.
대부분의
HostFinalizeImportMeta의 기본 구현은
delete 연산자
도출된
이고
마지막 규칙은 delete (((foo))) 같은 표현식이 첫 번째 규칙의 재귀적 적용으로 인해 early error를 발생시킨다는 뜻이다.
delete 연산자가 delete 연산자가
void 연산자typeof 연산자+ 연산자단항 + 연산자는 피연산자를
- 연산자단항 - 연산자는 피연산자를 수치 값으로 변환한 뒤 부호를 반전시킨다.
~ )! )* 연산자는 곱셈을 수행하여 피연산자의 곱을 생성한다./ 연산자는 나눗셈을 수행하여 피연산자의 몫을 생성한다.% 연산자는 암묵적인 나눗셈에서 피연산자의 나머지를 산출한다.+ )덧셈 연산자는 문자열 연결 또는 수치 덧셈을 수행한다.
- )- 연산자는 뺄셈을 수행하여 피연산자의 차를 생성한다.
<< )왼쪽 피연산자에 대해 오른쪽 피연산자가 지정한 양만큼 비트 단위 왼쪽 시프트 연산을 수행한다.
>> )왼쪽 피연산자에 대해 오른쪽 피연산자가 지정한 양만큼 부호 확장 비트 단위 오른쪽 시프트 연산을 수행한다.
>>> )왼쪽 피연산자에 대해 오른쪽 피연산자가 지정한 양만큼 0 확장 비트 단위 오른쪽 시프트 연산을 수행한다.
>>>, 관계 연산자를 평가한 결과는 언제나
[In] 문법 매개변수는 관계 표현식의 in 연산자와 for 문 안의 in 연산자를 혼동하지 않도록 하기 위해 필요하다.
The abstract operation InstanceofOperator takes arguments value (an ECMAScript language value) and target (an ECMAScript language value) and returns either a
단계 instanceof 연산자 의미론을 정의하기 위해 instanceof 의미론을 사용한다.
동등 연산자를 평가한 결과는 언제나
동등 연산자는 다음 불변식을 유지한다:
A != B는 !(A == B)와 동등하다.
A == B는 A와 B의 평가 순서를 제외하면 B == A와 동등하다.
동등 연산자는 항상 추이적이지는 않다. 예를 들어, 같은 String 값을 나타내는 서로 다른 두 String 객체가 있을 수 있다; 각 String 객체는 == 연산자에 의해 그 String 값과는 같다고 간주되지만, 두 String 객체는 서로 같지 않다. 예를 들어:
new String("a") == "a"와 "a" == new String("a")는 둘 다 new String("a") == new String("a")는 String 비교는 코드 단위 값 시퀀스에 대한 단순한 동등성 테스트를 사용한다. Unicode 명세에 정의된 보다 복잡하고 의미 지향적인 문자 또는 문자열 동등성 및
&& 또는 || 연산자가 생성하는 값은 반드시
? : )ECMAScript의
| assignmentOpText | opText |
|---|---|
**= | ** |
*= | * |
/= | / |
%= | % |
+= | + |
-= | - |
<<= | << |
>>= | >> |
>>>= | >>> |
&= | & |
^= | ^ |
|= | | |
이 표현식이
The abstract operation ApplyStringOrNumericBinaryOperator takes arguments lVal (an ECMAScript language value), opText (**, *, /, %, +, -, <<, >>, >>>, &, ^, or |), and rVal (an ECMAScript language value) and returns either a
+이면,**이면, ? /이면, ? %이면, ? >>>이면, ? | opText | operation |
|---|---|
* | |
+ | |
- | |
<< | |
>> | |
& | |
^ | |
| | |
| opText | operation |
|---|---|
** | |
* | |
/ | |
% | |
+ | |
- | |
<< | |
>> | |
>>> | |
& | |
^ | |
| | |
단계
단계
The abstract operation EvaluateStringOrNumericBinaryExpression takes arguments leftOperand (a Parse Node), opText (**, *, /, %, +, -, <<, >>, >>>, &, ^, or |), and rightOperand (a Parse Node) and returns either a
특정 상황에서 production의 인스턴스를 처리할 때
The syntax-directed operation DestructuringAssignmentEvaluation takes argument value (an ECMAScript language value) and returns either a
The syntax-directed operation PropertyDestructuringAssignmentEvaluation takes argument value (an ECMAScript language value) and returns either a
The syntax-directed operation RestDestructuringAssignmentEvaluation takes arguments value (an ECMAScript language value) and excludedNames (a
The syntax-directed operation IteratorDestructuringAssignmentEvaluation takes argument iteratorRecord (an
좌에서 우로의 평가 순서는, 구조 분해 패턴이 아닌
The syntax-directed operation KeyedDestructuringAssignmentEvaluation takes arguments value (an ECMAScript language value) and propertyName (a property key) and returns either a
, )