The abstract operation ToPrimitive takes argument input (an ECMAScript language value) and optional argument preferredType (string or number) and returns either a normal completion containing an ECMAScript language value or a throw completion. これは input 引数を非 Object 型へ変換する。あるオブジェクトが複数の primitive 型へ変換可能な場合、任意のヒント preferredType を用いてその型を優先してよい。 It performs the following steps when called:
ToPrimitive がヒントなしで呼び出されると、一般にはヒントが number であったかのように振る舞う。しかし、オブジェクトは %Symbol.toPrimitive% メソッドを定義することでこの振る舞いを上書きできる。この仕様で定義されるオブジェクトのうち、既定の ToPrimitive の振る舞いを上書きするのは Date(21.4.4.45 を参照)と Symbol object(20.4.3.5 を参照)のみである。Date は、ヒントが存在しない場合を、ヒントが string であったかのように扱う。
7.1.1.1 OrdinaryToPrimitive ( obj, hint )
The abstract operation OrdinaryToPrimitive takes arguments obj (an Object) and hint (string or number) and returns either a normal completion containing an ECMAScript language value or a throw completion. It performs the following steps when called:
The abstract operation ToBoolean takes argument argument (an ECMAScript language value) and returns a Boolean. これは argument を Boolean 型の値へ変換する。 It performs the following steps when called:
The abstract operation ToNumeric takes argument value (an ECMAScript language value) and returns either a normal completion containing either a Number or a BigInt, or a throw completion. これは value を Number または BigInt に変換して返す。 It performs the following steps when called:
The abstract operation RoundMVResult takes argument n (a mathematical value) and returns a Number. これは n を implementation-defined な方法で Number に変換する。この抽象操作において、ある桁は、それが 0 でないか、またはその左側に非 0 の桁が存在し、かつその右側にも非 0 の桁が存在する場合に significant である。この抽象操作において、数学的値の表現によって “表される数学的値” とは、数学的値の “10 進表現” の逆である。 It performs the following steps when called:
n の 10 進表現が 20 桁以下の significant digits を持つなら、𝔽(n) を返す。
The abstract operation ToIntegerOrInfinity takes argument argument (an ECMAScript language value) and returns either a normal completion containing either an integer, +∞, or -∞, or a throw completion. これは argument を、その Number 値の小数部分を切り捨てた整数へ変換する。また、その Number 値が無限大である場合には +∞ または -∞ へ変換する。 It performs the following steps when called:
The abstract operation ToInt32 takes argument argument (ECMAScript 言語値) and returns 整数の Number を含む正常完了、または throw 完了. これは、argument を、𝔽(-231) から 𝔽(231 - 1) までの両端を含む区間にある、-0𝔽 を除く 232 個の整数の Number 値のうちの 1 つに変換する。 It performs the following steps when called:
The abstract operation ToUint32 takes argument argument (ECMAScript 言語値) and returns 整数の Number を含む正常完了、または throw 完了. これは、argument を、+0𝔽 から 𝔽(232 - 1) までの両端を含む区間にある 232 個の整数の Number 値のうちの 1 つに変換する。 It performs the following steps when called:
The abstract operation ToInt16 takes argument argument (ECMAScript 言語値) and returns 整数の Number を含む正常完了、または throw 完了. これは、argument を、𝔽(-215) から 𝔽(215 - 1) までの両端を含む区間にある、-0𝔽 を除く 216 個の整数の Number 値のうちの 1 つに変換する。 It performs the following steps when called:
The abstract operation ToUint16 takes argument argument (ECMAScript 言語値) and returns 整数の Number を含む正常完了、または throw 完了. これは、argument を、+0𝔽 から 𝔽(216 - 1) までの両端を含む区間にある 216 個の整数の Number 値のうちの 1 つに変換する。 It performs the following steps when called:
The abstract operation ToInt8 takes argument argument (ECMAScript 言語値) and returns 整数の Number を含む正常完了、または throw 完了. これは、argument を、-128𝔽 から 127𝔽 までの両端を含む区間にある、-0𝔽 を除く 28 個の整数の Number 値のうちの 1 つに変換する。 It performs the following steps when called:
The abstract operation ToUint8 takes argument argument (ECMAScript 言語値) and returns 整数の Number を含む正常完了、または throw 完了. これは、argument を、+0𝔽 から 255𝔽 までの両端を含む区間にある 28 個の整数の Number 値のうちの 1 つに変換する。 It performs the following steps when called:
The abstract operation ToUint8Clamp takes argument argument (ECMAScript 言語値) and returns 整数の Number を含む正常完了、または throw 完了. これは、argument を +0𝔽 から 255𝔽 までの両端を含む区間にある 28 個の整数の Number 値のうちの 1 つにクランプし、丸める。 It performs the following steps when called:
The abstract operation ToBigInt takes argument argument (ECMAScript 言語値) and returns BigInt を含む正常完了、または throw 完了. これは、argument を BigInt 値に変換する、または Number からの暗黙の変換が必要となる場合は throw する。 It performs the following steps when called:
The abstract operation ToString takes argument argument (ECMAScript 言語値) and returns String を含む正常完了、または throw 完了. これは、argument を String 型の値に変換する。 It performs the following steps when called:
The abstract operation ToObject takes argument argument (ECMAScript 言語値) and returns Object を含む正常完了、または throw 完了. これは、argument を Object 型の値に変換する。 It performs the following steps when called:
The abstract operation ToPropertyKey takes argument argument (ECMAScript 言語値) and returns プロパティキーを含む正常完了、または throw 完了. これは、argument をプロパティキーとして使用できる値に変換する。 It performs the following steps when called:
The abstract operation ToLength takes argument argument (ECMAScript 言語値) and returns 非負の整数の Number を含む正常完了、または throw 完了. これは、argument を、配列風オブジェクトの長さとして使用するのに適した非負の整数の 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 RequireObjectCoercible takes argument argument (an ECMAScript language value) and returns either a normal completion containingunused or a throw completion. これは argument が ToObject を用いて Object に変換できない値である場合、エラーを throw する。 It performs the following steps when called:
The abstract operation IsCallable takes argument argument (an ECMAScript language value) and returns a Boolean. これは argument が [[Call]] 内部メソッドを持つ callable function であるかどうかを判定する。 It performs the following steps when called:
argument が Object でないなら、false を返す。
argument が [[Call]] 内部メソッドを持つなら、true を返す。
false を返す。
7.2.4 IsConstructor ( argument )
The abstract operation IsConstructor takes argument argument (an ECMAScript language value) and returns a Boolean. これは argument が [[Construct]] 内部メソッドを持つ function object であるかどうかを判定する。 It performs the following steps when called:
The abstract operation IsStringWellFormedUnicode takes argument string (a String) and returns a Boolean. これは 6.1.4 に記述されるように string を UTF-16 で符号化されたコードポイント列として解釈し、それが well formed な UTF-16 列であるかどうかを判定する。 It performs the following steps when called:
The abstract operation SameType takes arguments x (an ECMAScript language value) and y (an ECMAScript language value) and returns a Boolean. これは 2 つの引数が同じ型であるかどうかを判定する。 It performs the following steps when called:
x が undefined かつ y が undefined なら、true を返す。
x が null かつ y が null なら、true を返す。
x が Boolean かつ y が Boolean なら、true を返す。
x が Number かつ y が Number なら、true を返す。
x が BigInt かつ y が BigInt なら、true を返す。
x が Symbol かつ y が Symbol なら、true を返す。
x が String かつ y が String なら、true を返す。
x が Object かつ y が Object なら、true を返す。
false を返す。
7.2.9 SameValue ( x, y )
The abstract operation SameValue takes arguments x (an ECMAScript language value) and y (an ECMAScript language value) and returns a Boolean. これは 2 つの引数が同じ値であるかどうかを判定する。 It performs the following steps when called:
このアルゴリズムは、すべての NaN 値を等価として扱い、かつ +0𝔽 と -0𝔽 を区別する点で IsStrictlyEqual Algorithm と異なる。
7.2.10 SameValueZero ( x, y )
The abstract operation SameValueZero takes arguments x (an ECMAScript language value) and y (an ECMAScript language value) and returns a Boolean. これは 2 つの引数が同じ値であるかどうかを判定する(+0𝔽 と -0𝔽 の違いは無視する)。 It performs the following steps when called:
The abstract operation SameValueNonNumber takes arguments x (an ECMAScript language value, but not a Number) and y (an ECMAScript language value, but not a Number) and returns a Boolean. It performs the following steps when called:
The abstract operation IsLessThan takes arguments x (an ECMAScript language value), y (an ECMAScript language value), and leftFirst (a Boolean) and returns either a normal completion containing either a Boolean or undefined, or a throw completion. これは比較 x < y のセマンティクスを提供し、true、false、または undefined(これは、オペランドを同じ数値型の比較可能な値へ強制変換できなかったことを示す)を返す。leftFirst フラグは、潜在的に可視の副作用を伴う操作が x および y に対して実行される順序を制御するために使用される。ECMAScript は式の左から右への評価を規定しているため、これは必要である。leftFirst が true の場合、x パラメータは、y パラメータに対応する式の左側に現れる式に対応する。leftFirst が false の場合、その逆であり、操作は x より前に y に対して実行されなければならない。 It performs the following steps when called:
String の比較では、UTF-16 コードユニット値の列に対する単純な辞書式順序を用いる。Unicode 仕様で定義される、より複雑で意味論指向の文字または文字列の等価性や照合順序の定義を使おうとはしない。したがって、Unicode Standard に従えば正準的に等しいが同じ正規化形式にない String 値は、不等と判定されうる。また、code unit による辞書式順序は、surrogate pair を含む String に対しては code point による順序とは異なることにも注意。
7.2.13 IsLooselyEqual ( x, y )
The abstract operation IsLooselyEqual takes arguments x (an ECMAScript language value) and y (an ECMAScript language value) and returns either a normal completion containing a Boolean or a throw completion. これは == 演算子の意味論を与える。 It performs the following steps when called:
The abstract operation IsStrictlyEqual takes arguments x (an ECMAScript language value) and y (an ECMAScript language value) and returns a Boolean. これは === 演算子の意味論を与える。 It performs the following steps when called:
このアルゴリズムは、符号付きゼロと NaN の扱いにおいて SameValue Algorithm と異なる。
7.3 Object に対する操作
7.3.1 MakeBasicObject ( internalSlotsList )
The abstract operation MakeBasicObject takes argument internalSlotsList (a List of internal slot names) and returns an Object. これは、ordinary object と exotic object の両方を含め、アルゴリズム的に生成されるすべての ECMAScript object の源である。これは、すべての object の生成で用いられる共通手順を切り出し、object 生成を一元化する。 It performs the following steps when called:
The abstract operation GetV takes arguments value (an ECMAScript language value) and propertyKey (a property key) and returns either a normal completion containing an ECMAScript language value or a throw completion. これは ECMAScript 言語値の特定のプロパティの値を取得するために用いられる。値が object でない場合、プロパティ探索はその値の型に応じた wrapper object を用いて行われる。 It performs the following steps when called:
The abstract operation Set takes arguments obj (an Object), propertyKey (a property key), value (an ECMAScript language value), and throw (a Boolean) and returns either a normal completion containingunused or a throw completion. これは object の特定のプロパティの値を設定するために用いられる。value はそのプロパティの新しい値である。 It performs the following steps when called:
7.3.5 CreateDataProperty ( obj, propertyKey, value )
The abstract operation CreateDataProperty takes arguments obj (an Object), propertyKey (a property key), and value (an ECMAScript language value) and returns either a normal completion containing a Boolean or a throw completion. これは object の新しい own property を生成するために用いられる。 It performs the following steps when called:
7.3.6 CreateDataPropertyOrThrow ( obj, propertyKey, value )
The abstract operation CreateDataPropertyOrThrow takes arguments obj (an Object), propertyKey (a property key), and value (an ECMAScript language value) and returns either a normal completion containingunused or a throw completion. これは object の新しい own property を生成するために用いられる。要求されたプロパティ更新を実行できない場合、TypeError 例外を throw する。 It performs the following steps when called:
7.3.7 CreateNonEnumerableDataPropertyOrThrow ( obj, propertyKey, value )
The abstract operation CreateNonEnumerableDataPropertyOrThrow takes arguments obj (an Object), propertyKey (a property key), and value (an ECMAScript language value) and returns unused. これは ordinary object の新しい non-enumerable な own property を生成するために用いられる。 It performs the following steps when called:
The abstract operation DeletePropertyOrThrow takes arguments obj (an Object) and propertyKey (a property key) and returns either a normal completion containingunused or a throw completion. これは object の特定の own property を削除するために用いられる。そのプロパティが configurable でない場合は例外を throw する。 It performs the following steps when called:
newTarget が存在しない場合、この操作は new F(...argumentsList) と等価である。
7.3.15 SetIntegrityLevel ( obj, level )
The abstract operation SetIntegrityLevel takes arguments obj (an Object) and level (sealed or frozen) and returns either a normal completion containing a Boolean or a throw completion. これは object の own property の集合を固定するために用いられる。 It performs the following steps when called:
The abstract operation TestIntegrityLevel takes arguments obj (an Object) and level (sealed or frozen) and returns either a normal completion containing a Boolean or a throw completion. これは object の own property の集合が固定されているかどうかを判定するために用いられる。 It performs the following steps when called:
The abstract operation CreateArrayFromList takes argument elements (a List of ECMAScript language values) and returns an Array. これは elements によって与えられる要素を持つ Array を生成するために用いられる。 It performs the following steps when called:
The abstract operation CreateListFromArrayLike takes argument obj (an ECMAScript language value) and optional argument validElementTypes (all or property-key) and returns either a normal completion containing a List of ECMAScript language values or a throw completion. これは obj の添字付きプロパティによって与えられる要素を持つ List 値を生成するために用いられる。validElementTypes は、要素として許可される値の型を示す。 It performs the following steps when called:
validElementTypes が存在しないなら、validElementTypes を all に設定する。
The abstract operation Invoke takes arguments value (an ECMAScript language value) and propertyKey (a property key) and optional argument argumentsList (a List of ECMAScript language values) and returns either a normal completion containing an ECMAScript language value or a throw completion. これは ECMAScript 言語値の method property を呼び出すために用いられる。value はプロパティ探索の起点であると同時に、呼出し時の this 値でもある。argumentsList は、その method に渡される引数値のリストである。argumentsList が存在しない場合、その値として新しい空の List が用いられる。 It performs the following steps when called:
argumentsList が存在しないなら、argumentsList を新しい空の List に設定する。
The abstract operation OrdinaryHasInstance takes arguments constructor (an ECMAScript language value) and instance (an ECMAScript language value) and returns either a normal completion containing a Boolean or a throw completion. これは、instance が constructor によって提供されるインスタンス object 継承経路を継承しているかどうかを判定する既定アルゴリズムを実装する。 It performs the following steps when called:
The abstract operation PrivateElementFind takes arguments obj (an Object) and privateName (a Private Name) and returns a PrivateElement or empty. It performs the following steps when called:
obj.[[PrivateElements]] が、pe.[[Key]] is privateName である PrivateElementpe を含むなら、
pe を返す。
empty を返す。
7.3.27 PrivateFieldAdd ( obj, privateName, value )
7.3.34 AddValueToKeyedGroup ( groups, key, value )
The abstract operation AddValueToKeyedGroup takes arguments groups (a List of Records with fields [[Key]] (an ECMAScript language value) and [[Elements]] (a List of ECMAScript language values)), key (an ECMAScript language value), and value (an ECMAScript language value) and returns unused. It performs the following steps when called:
groups 内の各 Record { [[Key]], [[Elements]] } group について、次を行う
7.3.37 SetterThatIgnoresPrototypeProperties ( thisValue, home, propertyKey, value )
The abstract operation SetterThatIgnoresPrototypeProperties takes arguments thisValue (an ECMAScript language value), home (an Object), propertyKey (a property key), and value (an ECMAScript language value) and returns either a normal completion containingunused or a throw completion. It performs the following steps when called:
The abstract operation CreateIteratorResultObject takes arguments value (an ECMAScript language value) and done (a Boolean) and returns an Object that conforms to the IteratorResult interface. これは IteratorResult interface に適合する object を生成する。 It performs the following steps when called: