PropertyNameList tarafından döndürülen Liste, bir ComputedPropertyName kullanılarak tanımlanan özellik adlarını içermez.
#13.2.5.2 Statik Anlambilim: IsComputedPropertyKey
Sözdizimi yönelimli işlem IsComputedPropertyKey hiçbir argüman almaz ve bir Boolean döndürür. Aşağıdaki üretimler üzerinde parça parça tanımlanmıştır:
PropertyName PropertyName : LiteralPropertyName
false döndür.
PropertyName PropertyName : ComputedPropertyName
true döndür.
#13.2.5.3 Statik Anlambilim: PropertyDefinitionNodes
Sözdizimi yönelimli işlem PropertyDefinitionNodes hiçbir argüman almaz ve Parse Node'lardan oluşan bir Liste döndürür. Aşağıdaki üretimler üzerinde parça parça tanımlanmıştır:
ObjectLiteral ObjectLiteral : { }
- Yeni bir boş Liste döndür.
PropertyDefinitionList PropertyDefinitionList : PropertyDefinition
- « PropertyDefinition » döndür.
PropertyDefinitionList PropertyDefinitionList : PropertyDefinitionList , PropertyDefinition
head, türetilen PropertyDefinitionList'in PropertyDefinitionNodes değeri olsun.
head ile « PropertyDefinition »'nin liste birleştirmesini döndür.
#13.2.5.4 Statik Anlambilim: PropertyNameList
Sözdizimi yönelimli işlem PropertyNameList hiçbir argüman almaz ve String'lerden oluşan bir Liste döndürür. Aşağıdaki üretimler üzerinde parça parça tanımlanmıştır:
PropertyDefinitionList PropertyDefinitionList : PropertyDefinition
propertyName, PropertyDefinition'ın PropName değeri olsun.
Eğer propertyName empty ise, yeni bir boş Liste döndür.
« propertyName » döndür.
PropertyDefinitionList PropertyDefinitionList : PropertyDefinitionList , PropertyDefinition
list, PropertyDefinitionList'in PropertyNameList değeri olsun.
propertyName, PropertyDefinition'ın PropName değeri olsun.
Eğer propertyName empty ise, list döndür.
list ile « propertyName »'nin liste birleştirmesini döndür.
#13.2.5.5 Çalışma Zamanı Anlambilimi: Değerlendirme
ObjectLiteral ObjectLiteral : { }
- OrdinaryObjectCreate(%Object.prototype%) döndür.
ObjectLiteral ObjectLiteral : { PropertyDefinitionList } { PropertyDefinitionList , }
obj = OrdinaryObjectCreate(%Object.prototype%) olsun.
? PropertyDefinitionList'in obj argümanıyla PropertyDefinitionEvaluation işlemini gerçekleştir.
obj döndür.
LiteralPropertyName LiteralPropertyName : IdentifierName
- IdentifierName'in StringValue değerini döndür.
LiteralPropertyName LiteralPropertyName : StringLiteral
- StringLiteral'ın SV değerini döndür.
LiteralPropertyName LiteralPropertyName : NumericLiteral
number, NumericLiteral'ın NumericValue değeri olsun.
! ToString(number) döndür.
ComputedPropertyName ComputedPropertyName : [ AssignmentExpression ]
exprValue = ? AssignmentExpression'in Evaluation değeri olsun.
propertyName = ? GetValue(exprValue) olsun.
? ToPropertyKey(propertyName) döndür.
#13.2.5.6 Çalışma Zamanı Anlambilimi: PropertyDefinitionEvaluation
Sözdizimi yönelimli işlem PropertyDefinitionEvaluation, obj (bir Object) argümanını alır ve ya unused içeren normal tamamlanma ya da bir ani tamamlanma döndürür. Aşağıdaki üretimler üzerinde parça parça tanımlanmıştır:
PropertyDefinitionList PropertyDefinitionList : PropertyDefinitionList , PropertyDefinition
? PropertyDefinitionList'in obj argümanıyla PropertyDefinitionEvaluation işlemini gerçekleştir.
? PropertyDefinition'ın obj argümanıyla PropertyDefinitionEvaluation işlemini gerçekleştir.
unused döndür.
PropertyDefinition PropertyDefinition : ... AssignmentExpression
exprValue = ? AssignmentExpression'in Evaluation değeri olsun.
fromValue = ? GetValue(exprValue) olsun.
excludedNames = yeni bir boş Liste olsun.
? CopyDataProperties(obj, fromValue, excludedNames) işlemini gerçekleştir.
unused döndür.
PropertyDefinition PropertyDefinition : IdentifierReference
propertyName, IdentifierReference'ın StringValue değeri olsun.
exprValue = ? IdentifierReference'ın Evaluation değeri olsun.
propertyValue = ? GetValue(exprValue) olsun.
Assert: obj, yapılandırılamaz özellikleri olmayan, sıradan, genişletilebilir bir nesnedir.
! CreateDataPropertyOrThrow(obj, propertyName, propertyValue) işlemini gerçekleştir.
unused döndür.
PropertyDefinition PropertyDefinition : PropertyName : AssignmentExpression
propertyKey = ? PropertyName'in Evaluation değeri olsun.
Eğer bu PropertyDefinition, ParseJSON için değerlendirilmekte olan bir Script içinde yer alıyorsa (bkz. ParseJSON'in 6 adımı), o zaman
- isProtoSetter =
false olsun.
Değilse, eğer propertyKey "__proto__" ise ve PropertyName'in IsComputedPropertyKey değeri false ise, o zaman
- isProtoSetter =
true olsun.
Değilse,
- isProtoSetter =
false olsun.
Eğer IsAnonymousFunctionDefinition(AssignmentExpression) true ise ve isProtoSetter false ise, o zaman
- propertyValue = ? AssignmentExpression'in propertyKey argümanıyla NamedEvaluation değeri olsun.
Değilse,
exprValueRef = ? AssignmentExpression'in Evaluation değeri olsun.
propertyValue = ? GetValue(exprValueRef) olsun.
Eğer isProtoSetter true ise, o zaman
Eğer propertyValue bir Object ise veya propertyValue null ise, o zaman
- ! obj.[[SetPrototypeOf]](propertyValue) işlemini gerçekleştir.
unused döndür.
Assert: obj, yapılandırılamaz özellikleri olmayan, sıradan, genişletilebilir bir nesnedir.
! CreateDataPropertyOrThrow(obj, propertyKey, propertyValue) işlemini gerçekleştir.
unused döndür.
PropertyDefinition PropertyDefinition : MethodDefinition
? MethodDefinition'ın obj ve true argümanlarıyla MethodDefinitionEvaluation işlemini gerçekleştir.
unused döndür.
#13.2.6 İşlev Tanımlayan İfadeler
PrimaryExpression PrimaryExpression : FunctionExpression
için bkz. 15.2.
PrimaryExpression PrimaryExpression : GeneratorExpression
için bkz. 15.5.
PrimaryExpression PrimaryExpression : ClassExpression
için bkz. 15.7.
PrimaryExpression PrimaryExpression : AsyncFunctionExpression
için bkz. 15.8.
PrimaryExpression PrimaryExpression : AsyncGeneratorExpression
için bkz. 15.6.
#13.2.7 Düzenli İfade Değişmezleri
#Sözdizimi
Bkz. 12.9.5.
#13.2.7.1 Statik Anlambilim: Erken Hatalar
PrimaryExpression PrimaryExpression : RegularExpressionLiteral
#13.2.7.2 Statik Anlambilim: IsValidRegularExpressionLiteral ( literal )
Soyut işlem IsValidRegularExpressionLiteral, literal (bir RegularExpressionLiteral Parse Node) argümanını alır ve bir Boolean döndürür. Argümanının geçerli bir düzenli ifade değişmezi olup olmadığını belirler. Çağrıldığında aşağıdaki adımları gerçekleştirir:
flags, literal'ın FlagText değeri olsun.
Eğer flags; d, g, i, m, s, u, v veya y dışında herhangi bir kod noktası içeriyorsa, false döndür.
Eğer flags herhangi bir kod noktasını birden fazla kez içeriyorsa, false döndür.
Eğer flags u içeriyorsa, u = true olsun; değilse u = false olsun.
Eğer flags v içeriyorsa, v = true olsun; değilse v = false olsun.
patternText, literal'ın BodyText değeri olsun.
Eğer u false ve v false ise, o zaman
stringValue = CodePointsToString(patternText) olsun.
patternText'i, stringValue'nun 16 bitlik öğelerinin her birini bir Unicode BMP kod noktası olarak yorumlamaktan elde edilen kod noktaları dizisi olarak ayarla. UTF-16 çözümlemesi öğelere uygulanmaz.
parseResult = ParsePattern(patternText, u, v) olsun.
Eğer parseResult bir Parse Node ise, true döndür.
false döndür.
#13.2.7.3 Çalışma Zamanı Anlambilimi: Değerlendirme
PrimaryExpression PrimaryExpression : RegularExpressionLiteral
pattern = CodePointsToString(RegularExpressionLiteral'ın BodyText değeri) olsun.
flags = CodePointsToString(RegularExpressionLiteral'ın FlagText değeri) olsun.
! RegExpCreate(pattern, flags) döndür.
#13.2.8 Şablon Değişmezleri
#Sözdizimi
TemplateLiteral TemplateLiteral[Yield, Await, Tagged] : NoSubstitutionTemplate SubstitutionTemplate[?Yield, ?Await, ?Tagged]
SubstitutionTemplate SubstitutionTemplate[Yield, Await, Tagged] : TemplateHead Expression[+In, ?Yield, ?Await] TemplateSpans[?Yield, ?Await, ?Tagged]
TemplateSpans TemplateSpans[Yield, Await, Tagged] : TemplateTail TemplateMiddleList[?Yield, ?Await, ?Tagged] TemplateTail
TemplateMiddleList TemplateMiddleList[Yield, Await, Tagged] : TemplateMiddle Expression[+In, ?Yield, ?Await] TemplateMiddleList[?Yield, ?Await, ?Tagged] TemplateMiddle Expression[+In, ?Yield, ?Await]
#13.2.8.1 Statik Anlambilim: Erken Hatalar
TemplateLiteral TemplateLiteral[Yield, Await, Tagged] : NoSubstitutionTemplate
TemplateLiteral TemplateLiteral[Yield, Await, Tagged] : SubstitutionTemplate[?Yield, ?Await, ?Tagged]
SubstitutionTemplate SubstitutionTemplate[Yield, Await, Tagged] : TemplateHead Expression[+In, ?Yield, ?Await] TemplateSpans[?Yield, ?Await, ?Tagged]
TemplateSpans TemplateSpans[Yield, Await, Tagged] : TemplateTail
TemplateMiddleList TemplateMiddleList[Yield, Await, Tagged] : TemplateMiddle Expression[+In, ?Yield, ?Await] TemplateMiddleList[?Yield, ?Await, ?Tagged] TemplateMiddle Expression[+In, ?Yield, ?Await]
#13.2.8.2 Statik Anlambilim: TemplateStrings
Sözdizimi yönelimli işlem TemplateStrings, raw (bir Boolean) argümanını alır ve ya String ya da undefined'lardan oluşan bir Liste döndürür. Aşağıdaki üretimler üzerinde parça parça tanımlanmıştır:
TemplateLiteral TemplateLiteral : NoSubstitutionTemplate
- « TemplateString(NoSubstitutionTemplate, raw) » döndür.
SubstitutionTemplate SubstitutionTemplate : TemplateHead Expression TemplateSpans
head = « TemplateString(TemplateHead, raw) » olsun.
tail, TemplateSpans'ın raw argümanıyla TemplateStrings değeri olsun.
head ile tail'in liste birleştirmesini döndür.
TemplateSpans TemplateSpans : TemplateTail
- « TemplateString(TemplateTail, raw) » döndür.
TemplateSpans TemplateSpans : TemplateMiddleList TemplateTail
middle, TemplateMiddleList'in raw argümanıyla TemplateStrings değeri olsun.
tail = « TemplateString(TemplateTail, raw) » olsun.
middle ile tail'in liste birleştirmesini döndür.
TemplateMiddleList TemplateMiddleList : TemplateMiddle Expression
- « TemplateString(TemplateMiddle, raw) » döndür.
TemplateMiddleList TemplateMiddleList : TemplateMiddleList TemplateMiddle Expression
front, TemplateMiddleList'in raw argümanıyla TemplateStrings değeri olsun.
last = « TemplateString(TemplateMiddle, raw) » olsun.
front ile last'in liste birleştirmesini döndür.
#13.2.8.3 Statik Anlambilim: TemplateString ( templateToken, raw )
Soyut işlem TemplateString, templateToken (bir NoSubstitutionTemplate Parse Node, bir TemplateHead Parse Node, bir TemplateMiddle Parse Node veya bir TemplateTail Parse Node) ve raw (bir Boolean) argümanlarını alır ve bir String veya undefined döndürür. Çağrıldığında aşağıdaki adımları gerçekleştirir:
Eğer raw true ise, o zaman
- string, templateToken'ın TRV değeri olsun.
Değilse,
- string, templateToken'ın TV değeri olsun.
string döndür.