The abstract operation UNKNOWN takes UNPARSEABLE ARGUMENTS. 将参数 input 转换为非 Object 的类型。如果一个对象可以转换为多个不同的原始类型,它可利用可选提示 preferredType 来偏向该类型。 It performs the following steps when called:
当 ToPrimitive 未带 hint 被调用时,一般表现为 hint 为 number。但对象可通过定义 %Symbol.toPrimitive% 方法来覆写此行为。本规范中只有 Date(参见 21.4.4.45)和 Symbol 对象(参见 20.4.3.5)覆写默认行为。Date 在缺少 hint 时将其视为 string。
7.1.1.1 OrdinaryToPrimitive ( O, hint )
The abstract operation OrdinaryToPrimitive takes arguments O (一个 Object) and hint (string 或 number) and returns 返回包含一个 ECMAScript 语言值的正常完成或一个抛出完成. It performs the following steps when called:
The abstract operation ToBoolean takes argument argument (一个 ECMAScript 语言值) and returns 一个 Boolean. 将 argument 转换为 Boolean 类型。 It performs the following steps when called:
The abstract operation ToNumeric takes argument value (一个 ECMAScript 语言值) and returns 返回包含 Number 或 BigInt 的正常完成,或抛出完成. 返回 value 转换后的 Number 或 BigInt。 It performs the following steps when called:
The abstract operation ToNumber takes argument argument (一个 ECMAScript 语言值) and returns 返回包含一个 Number 的正常完成或抛出完成. 将 argument 转换为 Number 类型。 It performs the following steps when called:
The abstract operation RoundMVResult takes argument n (一个数学值) and returns 一个 Number. 以实现定义的方式将 n 转换为 Number。对本抽象操作而言,若一位数字不是 0,或其左侧与右侧存在非零数字,则该位为有效数字。此处“数学值的表示所表示的数学值”与“数学值的十进制表示”互为逆过程。 It performs the following steps when called:
The abstract operation ToIntegerOrInfinity takes argument argument (一个 ECMAScript 语言值) and returns 返回包含一个整数、+∞、- ∞ 的正常完成,或抛出完成. 将 argument 转换为其 Number 值去掉小数部分后的整数;若该 Number 值为无穷大,则转换为 +∞ 或 -∞。 It performs the following steps when called:
𝔽(ToIntegerOrInfinity(x)) 对任意 x 都不会返回 -0𝔽。截断小数部分在将 x 转换为数学值之后执行。
7.1.6 ToInt32 ( argument )
The abstract operation ToInt32 takes argument argument (一个 ECMAScript 语言值) and returns 返回包含一个整型 Number 的正常完成或一个抛出完成. 将 argument 转换为 232 个整型 Number 值之一,范围为 𝔽(-231) 到 𝔽(231 - 1)(含)。 It performs the following steps when called:
The abstract operation ToUint32 takes argument argument (一个 ECMAScript 语言值) and returns 返回包含一个整型 Number 的正常完成或一个抛出完成. 将 argument 转换为 232 个整型 Number 值之一,范围为 +0𝔽 到 𝔽(232 - 1)(含)。 It performs the following steps when called:
The abstract operation ToInt16 takes argument argument (一个 ECMAScript 语言值) and returns 返回包含一个整型 Number 的正常完成或抛出完成. 转换为 216 个整型 Number 之一,范围 𝔽(-215) 到 𝔽(215 - 1)。 It performs the following steps when called:
The abstract operation ToUint16 takes argument argument (一个 ECMAScript 语言值) and returns 返回包含一个整型 Number 的正常完成或抛出完成. 转换为 216 个整型 Number 之一,范围 +0𝔽 到 𝔽(216 - 1)。 It performs the following steps when called:
The abstract operation ToInt8 takes argument argument (一个 ECMAScript 语言值) and returns 返回包含一个整型 Number 的正常完成或抛出完成. 转换为 28 个整型 Number 之一,范围 -128𝔽 到 127𝔽。 It performs the following steps when called:
The abstract operation ToUint8 takes argument argument (一个 ECMAScript 语言值) and returns 返回包含一个整型 Number 的正常完成或抛出完成. 转换为 28 个整型 Number 之一,范围 +0𝔽 到 255𝔽。 It performs the following steps when called:
The abstract operation ToUint8Clamp takes argument argument (一个 ECMAScript 语言值) and returns 返回包含一个整型 Number 的正常完成或抛出完成. 对 argument 进行钳制并取整,结果为 28 个整型 Number 之一,范围 +0𝔽 到 255𝔽。 It performs the following steps when called:
不同于大多数整数转换操作,ToUint8Clamp 会四舍五入而不是截断非整数值,它使用“round half to even”平分舍入规则,不同于 Math.round 的“round half up”。
7.1.13 ToBigInt ( argument )
The abstract operation ToBigInt takes argument argument (一个 ECMAScript 语言值) and returns 返回包含 BigInt 的正常完成或抛出完成. 将 argument 转换为 BigInt;若需要从 Number 的隐式转换则抛出。 It performs the following steps when called:
The abstract operation ToString takes argument argument (一个 ECMAScript 语言值) and returns 返回包含一个 String 的正常完成或抛出完成. 将 argument 转换为 String 类型。 It performs the following steps when called:
The abstract operation ToObject takes argument argument (一个 ECMAScript 语言值) and returns 返回包含一个 Object 的正常完成或抛出完成. 将 argument 转换为 Object 类型。 It performs the following steps when called:
The abstract operation ToPropertyKey takes argument argument (一个 ECMAScript 语言值) and returns 返回包含一个属性键的正常完成或抛出完成. 将 argument 转换为可用作属性键的值。 It performs the following steps when called:
The abstract operation ToLength takes argument argument (一个 ECMAScript 语言值) and returns 返回包含非负整型 Number 的正常完成或抛出完成. 将 argument 钳制并截断为可用于类数组对象 length 的非负整型 Number。 It performs the following steps when called:
The abstract operation CanonicalNumericIndexString takes argument argument (一个 String) and returns 一个 Number 或 undefined. 如果 argument 是 "-0" 或者完全匹配某个 Number 值 n 的 ToString(n),则返回该 Number 值;否则返回 undefined。 It performs the following steps when called:
The abstract operation ToIndex takes argument value (一个 ECMAScript 语言值) and returns 返回包含非负整数的正常完成或抛出完成. 将 value 转换为整数,若其为非负且对应整数索引则返回该整数;否则抛出异常。 It performs the following steps when called:
The abstract operation RequireObjectCoercible takes argument argument (一个 ECMAScript 语言值) and returns 返回包含 unused 的正常完成或抛出完成. 若 argument 不能通过 ToObject 转换为对象则抛出错误。 It performs the following steps when called:
如果 argument 是 undefined 或 null,抛出 TypeError 异常。
返回 unused。
7.2.2 IsArray ( argument )
The abstract operation IsArray takes argument argument (一个 ECMAScript 语言值) and returns 返回包含 Boolean 的正常完成或抛出完成. It performs the following steps when called:
The abstract operation IsCallable takes argument argument (一个 ECMAScript 语言值) and returns 一个 Boolean. 判断 argument 是否为具有 [[Call]] 内部方法的可调用函数。 It performs the following steps when called:
The abstract operation IsConstructor takes argument argument (一个 ECMAScript 语言值) and returns 一个 Boolean. 判断 argument 是否为具有 [[Construct]] 内部方法的函数对象。 It performs the following steps when called:
The abstract operation IsExtensible takes argument O (一个 Object) and returns 返回包含 Boolean 的正常完成或抛出完成. 用于判断是否可向 O 添加额外属性。 It performs the following steps when called:
返回 ? O.[[IsExtensible]]()。
7.2.6 IsRegExp ( argument )
The abstract operation IsRegExp takes argument argument (一个 ECMAScript 语言值) and returns 返回包含 Boolean 的正常完成或抛出完成. It performs the following steps when called:
The abstract operation UNKNOWN takes UNPARSEABLE ARGUMENTS. 将 string 视为 UTF-16 编码的代码点序列(见 6.1.4),判断其是否为 well formed UTF-16 序列。 It performs the following steps when called:
令 len 为 string 的长度。
令 k 为 0。
循环,当 k < len,
令 cp 为 CodePointAt(string, k)。
如果 cp.[[IsUnpairedSurrogate]] 是 true,返回 false。
设 k 为 k + cp.[[CodeUnitCount]]。
返回 true。
7.2.8 SameType ( x, y )
The abstract operation SameType takes arguments x (一个 ECMAScript 语言值) and y (一个 ECMAScript 语言值) and returns 一个 Boolean. 判断两个参数是否是相同类型。 It performs the following steps when called:
The abstract operation SameValue takes arguments x (一个 ECMAScript 语言值) and y (一个 ECMAScript 语言值) and returns 一个 Boolean. 判断两个参数是否为同一值。 It performs the following steps when called:
The abstract operation SameValueZero takes arguments x (一个 ECMAScript 语言值) and y (一个 ECMAScript 语言值) and returns 一个 Boolean. 判断是否为同一值(忽略 +0𝔽 与 -0𝔽 的差别)。 It performs the following steps when called:
The abstract operation SameValueNonNumber takes arguments x (一个 ECMAScript 语言值(非 Number)) and y (一个 ECMAScript 语言值(非 Number)) and returns 一个 Boolean. It performs the following steps when called:
The abstract operation IsLessThan takes arguments x (一个 ECMAScript 语言值), y (一个 ECMAScript 语言值), and LeftFirst (一个 Boolean) and returns 返回包含 Boolean 或 undefined 的正常完成,或抛出完成. 提供 x < y 的语义,返回 true、false 或 undefined(表示至少一个操作数为 NaN)。LeftFirst 标志控制可能具副作用的操作执行顺序,以符合 ECMAScript 自左向右求值规则。若 LeftFirst 为 true,x 对应的表达式位于 y 左侧;否则顺序反转并需先对 y 执行操作。 It performs the following steps when called:
The abstract operation IsLooselyEqual takes arguments x (一个 ECMAScript 语言值) and y (一个 ECMAScript 语言值) and returns 返回包含 Boolean 的正常完成或抛出完成. == 运算符的语义。 It performs the following steps when called:
The abstract operation IsStrictlyEqual takes arguments x (一个 ECMAScript 语言值) and y (一个 ECMAScript 语言值) and returns 一个 Boolean. === 运算符的语义。 It performs the following steps when called:
The abstract operation MakeBasicObject takes argument internalSlotsList (一个内部槽名称的 List) and returns 一个 Object. 是所有算法创建 ECMAScript 对象(普通或特殊)的基础,它抽出创建所有对象的通用步骤并集中化对象创建。 It performs the following steps when called:
The abstract operation Get takes arguments O (一个 Object) and P (一个属性键) and returns 返回包含一个 ECMAScript 语言值的正常完成或抛出完成. 用于获取对象特定属性的值。 It performs the following steps when called:
返回 ? O.[[Get]](P, O)。
7.3.3 GetV ( V, P )
The abstract operation GetV takes arguments V (一个 ECMAScript 语言值) and P (一个属性键) and returns 返回包含一个 ECMAScript 语言值的正常完成或抛出完成. 用于获取一个 ECMAScript 语言值特定属性的值;若该值不是对象,则通过类型对应的包装对象执行属性查找。 It performs the following steps when called:
The abstract operation Set takes arguments O (一个 Object), P (一个属性键), V (一个 ECMAScript 语言值), and Throw (一个 Boolean) and returns 返回包含 unused 的正常完成或抛出完成. 设置对象特定属性的值,V 是新值。 It performs the following steps when called:
令 success 为 ? O.[[Set]](P, V, O)。
若 success 为 false 且 Throw 为 true,抛出 TypeError。
返回 unused。
7.3.5 CreateDataProperty ( O, P, V )
The abstract operation CreateDataProperty takes arguments O (一个 Object), P (一个属性键), and V (一个 ECMAScript 语言值) and returns 返回包含 Boolean 的正常完成或抛出完成. 创建对象的一个新的自身属性。 It performs the following steps when called:
此操作创建的属性特性与语言赋值运算符新建属性时的默认特性相同。通常该属性不存在;若已存在且不可配置,或 O 不可扩展,则 [[DefineOwnProperty]] 返回 false。
7.3.6 CreateDataPropertyOrThrow ( O, P, V )
The abstract operation CreateDataPropertyOrThrow takes arguments O (一个 Object), P (一个属性键), and V (一个 ECMAScript 语言值) and returns 返回包含 unused 的正常完成或抛出完成. 创建对象一个新的自身属性。如果该属性更新无法执行则抛出 TypeError。 It performs the following steps when called:
7.3.7 CreateNonEnumerableDataPropertyOrThrow ( O, P, V )
The abstract operation CreateNonEnumerableDataPropertyOrThrow takes arguments O (一个 Object), P (一个属性键), and V (一个 ECMAScript 语言值) and returns unused. 创建一个新的不可枚举自身数据属性(普通对象)。 It performs the following steps when called:
The abstract operation DefinePropertyOrThrow takes arguments O (一个 Object), P (一个属性键), and desc (一个 Property Descriptor) and returns 返回包含 unused 的正常完成或抛出完成. 以会在失败时抛出 TypeError 的方式调用对象的 [[DefineOwnProperty]]。 It performs the following steps when called:
令 success 为 ? O.[[DefineOwnProperty]](P, desc)。
若 success 为 false,抛出 TypeError。
返回 unused。
7.3.9 DeletePropertyOrThrow ( O, P )
The abstract operation DeletePropertyOrThrow takes arguments O (一个 Object) and P (一个属性键) and returns 返回包含 unused 的正常完成或抛出完成. 移除对象的指定自身属性;若属性不可配置则抛出异常。 It performs the following steps when called:
令 success 为 ? O.[[Delete]](P)。
若 success 为 false,抛出 TypeError。
返回 unused。
7.3.10 GetMethod ( V, P )
The abstract operation GetMethod takes arguments V (一个 ECMAScript 语言值) and P (一个属性键) and returns 返回包含函数对象或 undefined 的正常完成,或抛出完成. 获取一个 ECMAScript 语言值的指定属性值,并期望其为函数。 It performs the following steps when called:
The abstract operation HasProperty takes arguments O (一个 Object) and P (一个属性键) and returns 返回包含 Boolean 的正常完成或抛出完成. 判断对象是否具有指定键的属性(自身或继承)。 It performs the following steps when called:
返回 ? O.[[HasProperty]](P)。
7.3.12 HasOwnProperty ( O, P )
The abstract operation HasOwnProperty takes arguments O (一个 Object) and P (一个属性键) and returns 返回包含 Boolean 的正常完成或抛出完成. 判断对象是否具有指定键的自身属性。 It performs the following steps when called:
The abstract operation UNKNOWN takes UNPARSEABLE ARGUMENTS. 调用函数对象的 [[Call]] 内部方法。F 是函数对象,V 为 this 值,argumentsList 为传递的参数列表。若 argumentsList 不存在,使用新的空 List。 It performs the following steps when called:
The abstract operation SetIntegrityLevel takes arguments O (一个 Object) and level (sealed 或 frozen) and returns 返回包含 Boolean 的正常完成或抛出完成. 固定对象自身属性集合。 It performs the following steps when called:
The abstract operation TestIntegrityLevel takes arguments O (一个 Object) and level (sealed 或 frozen) and returns 返回包含 Boolean 的正常完成或抛出完成. 判断对象自身属性集合是否已固定。 It performs the following steps when called:
The abstract operation CreateArrayFromList takes argument elements (一个 ECMAScript 语言值的 List) and returns 一个 Array. 创建一个其元素由 elements 提供的数组。 It performs the following steps when called:
The abstract operation LengthOfArrayLike takes argument obj (一个 Object) and returns 返回包含非负整数的正常完成或抛出完成. 返回类数组对象 "length" 属性的值。 It performs the following steps when called:
7.3.19
CreateListFromArrayLike (
obj: 一个 ECMAScript 语言值,
可选 validElementTypes: all 或 property-key,
): 返回包含 ECMAScript 语言值 List 的正常完成或抛出完成
The abstract operation UNKNOWN takes UNPARSEABLE ARGUMENTS. 创建一个 List,其元素由 obj 的按索引属性提供;validElementTypes 指定允许的元素类型。 It performs the following steps when called:
The abstract operation UNKNOWN takes UNPARSEABLE ARGUMENTS. 调用一个 ECMAScript 语言值的方法属性,V 既作为查找点又作为 this 值。argumentsList 为传入参数,缺省用空 List。 It performs the following steps when called:
The abstract operation OrdinaryHasInstance takes arguments C (一个 ECMAScript 语言值) and O (一个 ECMAScript 语言值) and returns 返回包含 Boolean 的正常完成或抛出完成. 实现默认算法:判断 O 是否继承自 C 提供的实例继承路径。 It performs the following steps when called:
7.3.22 SpeciesConstructor ( O, defaultConstructor )
The abstract operation SpeciesConstructor takes arguments O (一个 Object) and defaultConstructor (一个 constructor) and returns 返回包含 constructor 的正常完成或抛出完成. 获取用于创建从 O 派生的新对象的构造函数;若从 O 开始找不到 %Symbol.species% 属性则使用 defaultConstructor。 It performs the following steps when called:
The abstract operation EnumerableOwnProperties takes arguments O (一个 Object) and kind (key, value, 或 key+value) and returns 返回包含 ECMAScript 语言值List 的正常完成或抛出完成. It performs the following steps when called:
The abstract operation GetFunctionRealm takes argument obj (一个函数对象) and returns 返回包含 Realm Record 的正常完成或抛出完成. It performs the following steps when called:
The abstract operation CopyDataProperties takes arguments target (一个 Object), source (一个 ECMAScript 语言值), and excludedItems (一个属性键的 List) and returns 返回包含 unused 的正常完成或抛出完成. It performs the following steps when called:
The abstract operation PrivateElementFind takes arguments O (一个 Object) and P (一个 Private Name) and returns 一个 PrivateElement 或 empty. It performs the following steps when called:
The abstract operation PrivateFieldAdd takes arguments O (一个 Object), P (一个 Private Name), and value (一个 ECMAScript 语言值) and returns 返回包含 unused 的正常完成或抛出完成. It performs the following steps when called:
The abstract operation PrivateMethodOrAccessorAdd takes arguments O (一个 Object) and method (一个 PrivateElement) and returns 返回包含 unused 的正常完成或抛出完成. It performs the following steps when called:
The abstract operation PrivateGet takes arguments O (一个 Object) and P (一个 Private Name) and returns 返回包含一个 ECMAScript 语言值的正常完成或抛出完成. It performs the following steps when called:
The abstract operation PrivateSet takes arguments O (一个 Object), P (一个 Private Name), and value (一个 ECMAScript 语言值) and returns 返回包含 unused 的正常完成或抛出完成. It performs the following steps when called:
The abstract operation DefineField takes arguments receiver (一个 Object) and fieldRecord (一个 ClassFieldDefinition Record) and returns 返回包含 unused 的正常完成或抛出完成. It performs the following steps when called:
7.3.33 InitializeInstanceElements ( O, constructor )
The abstract operation InitializeInstanceElements takes arguments O (一个 Object) and constructor (一个 ECMAScript 函数对象) and returns 返回包含 unused 的正常完成或抛出完成. It performs the following steps when called:
7.3.34 AddValueToKeyedGroup ( groups, key, value )
The abstract operation AddValueToKeyedGroup takes arguments groups (一个包含 [[Key]] (ECMAScript 语言值) 与 [[Elements]] (值 List) 字段的 RecordList), key (一个 ECMAScript 语言值), and value (一个 ECMAScript 语言值) and returns unused. It performs the following steps when called:
令 group 为 Record { [[Key]]: key, [[Elements]]: « value » }。
将 group 加入 groups。
返回 unused。
7.3.35 GroupBy ( items, callback, keyCoercion )
The abstract operation GroupBy takes arguments items (一个 ECMAScript 语言值), callback (一个 ECMAScript 语言值), and keyCoercion (property 或 collection) and returns 返回包含带 [[Key]] 与 [[Elements]] 字段的 RecordList 的正常完成,或抛出完成. It performs the following steps when called:
7.3.36 SetterThatIgnoresPrototypeProperties ( thisValue, home, p, v )
The abstract operation SetterThatIgnoresPrototypeProperties takes arguments thisValue (一个 ECMAScript 语言值), home (一个 Object), p (一个属性键), and v (一个 ECMAScript 语言值) and returns 返回包含 unused 的正常完成或抛出完成. It performs the following steps when called:
The abstract operation GetIteratorDirect takes argument obj (一个 Object) and returns 返回包含 Iterator Record 的正常完成或抛出完成. It performs the following steps when called:
The abstract operation GetIteratorFromMethod takes arguments obj (一个 ECMAScript 语言值) and method (一个函数对象) and returns 返回包含 Iterator Record 的正常完成或抛出完成. It performs the following steps when called:
The abstract operation GetIterator takes arguments obj (一个 ECMAScript 语言值) and kind (sync 或 async) and returns 返回包含 Iterator Record 的正常完成或抛出完成. It performs the following steps when called:
The abstract operation GetIteratorFlattenable takes arguments obj (一个 ECMAScript 语言值) and primitiveHandling (iterate-string-primitives 或 reject-primitives) and returns 返回包含 Iterator Record 的正常完成或抛出完成. It performs the following steps when called:
The abstract operation IteratorComplete takes argument iteratorResult (一个 Object) and returns 返回包含 Boolean 的正常完成或抛出完成. It performs the following steps when called:
The abstract operation IteratorValue takes argument iteratorResult (一个 Object) and returns 返回包含一个 ECMAScript 语言值的正常完成或抛出完成. It performs the following steps when called:
The abstract operation IteratorStep takes argument iteratorRecord (一个 Iterator Record) and returns 返回包含一个 Object 或 done 的正常完成或抛出完成. 调用 iteratorRecord.[[NextMethod]] 请求下一个值;若迭代结束返回 done,否则返回 IteratorResult 对象。 It performs the following steps when called:
The abstract operation IteratorStepValue takes argument iteratorRecord (一个 Iterator Record) and returns 返回包含 ECMAScript 语言值或 done 的正常完成,或抛出完成. 与 IteratorStep 类似,但若有值则直接返回值,否则 done。 It performs the following steps when called:
The abstract operation IteratorClose takes arguments iteratorRecord (一个 Iterator Record) and completion (一个 Completion Record) and returns 一个 Completion Record. 通知迭代器执行其完成状态下的收尾动作。 It performs the following steps when called:
The abstract operation AsyncIteratorClose takes arguments iteratorRecord (一个 Iterator Record) and completion (一个 Completion Record) and returns 一个 Completion Record. 通知异步迭代器执行其完成状态下的收尾动作。 It performs the following steps when called:
The abstract operation CreateIteratorResultObject takes arguments value (一个 ECMAScript 语言值) and done (一个 Boolean) and returns 一个符合 IteratorResult 接口的 Object. 创建一个符合 IteratorResult 接口的对象。 It performs the following steps when called:
The abstract operation CreateListIteratorRecord takes argument list (一个 ECMAScript 语言值的 List) and returns 一个 Iterator Record. 创建一个 Iterator Record,其 [[NextMethod]] 依次返回 list 的元素。 It performs the following steps when called:
The abstract operation IteratorToList takes argument iteratorRecord (一个 Iterator Record) and returns 返回包含 ECMAScript 语言值List 的正常完成或抛出完成. It performs the following steps when called: