19 グローバルオブジェクト

グローバルオブジェクト:

19.1 グローバルオブジェクトの値プロパティ

19.1.1 globalThis

Realm Record realm におけるグローバルオブジェクト"globalThis" プロパティの初期値は realm.[[GlobalEnv]].[[GlobalThisValue]] である。

このプロパティは属性 { [[Writable]]: true, [[Enumerable]]: false, [[Configurable]]: true } を持つ。

19.1.2 Infinity

Infinity の値は +∞𝔽 である (6.1.6.1 参照)。このプロパティは属性 { [[Writable]]: false, [[Enumerable]]: false, [[Configurable]]: false } を持つ。

19.1.3 NaN

NaN の値は NaN である (6.1.6.1 参照)。このプロパティは属性 { [[Writable]]: false, [[Enumerable]]: false, [[Configurable]]: false } を持つ。

19.1.4 undefined

undefined の値は undefined である (6.1.1 参照)。このプロパティは属性 { [[Writable]]: false, [[Enumerable]]: false, [[Configurable]]: false } を持つ。

19.2 グローバルオブジェクトの関数プロパティ

19.2.1 eval ( x )

この関数は %eval% 組み込みオブジェクトである。

呼び出されたとき、次の手順を実行する:

  1. PerformEval(x, false, false) を返す。

19.2.1.1 PerformEval ( x, strictCaller, direct )

The abstract operation PerformEval takes arguments x (ECMAScript 言語値), strictCaller (Boolean), and direct (Boolean) and returns ECMAScript 言語値を含む通常完了または throw completion. It performs the following steps when called:

  1. Assert: directfalse なら strictCallerfalse
  2. もし x が String でなければ x を返す。
  3. evalRealm を現在の Realm Record とする。
  4. 注: 直接 eval の場合、evalRealmeval 呼出元と eval 関数自身の双方のレルムである。
  5. HostEnsureCanCompileStrings(evalRealm, « », x, direct) を実行。
  6. inFunctionfalse とする。
  7. inMethodfalse とする。
  8. inDerivedConstructorfalse とする。
  9. inClassFieldInitializerfalse とする。
  10. もし directtrue なら
    1. thisEnvRecGetThisEnvironment() とする。
    2. もし thisEnvRecFunction Environment Record なら
      1. FthisEnvRec.[[FunctionObject]] とする。
      2. inFunctiontrue に設定。
      3. inMethodthisEnvRec.HasSuperBinding() に設定。
      4. もし F.[[ConstructorKind]]derived なら inDerivedConstructortrue に設定。
      5. classFieldInitializerNameF.[[ClassFieldInitializerName]] とする。
      6. もし classFieldInitializerNameempty でなければ inClassFieldInitializertrue に設定。
  11. 以下のサブステップを実装定義の順序(構文解析とエラー検出をインタリーブしてもよい)で実行:
    1. script を ParseText(x, Script) とする。
    2. もし script がエラーのリストなら SyntaxError 例外を投げる。
    3. もし script Contains ScriptBodyfalse なら undefined を返す。
    4. bodyscriptScriptBody とする。
    5. もし inFunctionfalse かつ bodyNewTarget を含むなら SyntaxError を投げる。
    6. もし inMethodfalse かつ bodySuperProperty を含むなら SyntaxError を投げる。
    7. もし inDerivedConstructorfalse かつ bodySuperCall を含むなら SyntaxError を投げる。
    8. もし inClassFieldInitializertrue かつ body の ContainsArguments が true なら SyntaxError を投げる。
  12. もし strictCallertrue なら strictEvaltrue とする。
  13. それ以外は strictEval を ScriptIsStrict of script とする。
  14. runningContext を実行中実行コンテキストとする。
  15. 注: directtrue の場合 runningContext は直接 eval を実行した実行コンテキストである。directfalse の場合 runningContexteval 呼出の実行コンテキストである。
  16. もし directtrue なら
    1. lexEnvNewDeclarativeEnvironment(runningContext の LexicalEnvironment) とする。
    2. varEnvrunningContext の VariableEnvironment とする。
    3. privateEnvrunningContext の PrivateEnvironment とする。
  17. それ以外
    1. lexEnvNewDeclarativeEnvironment(evalRealm.[[GlobalEnv]]) とする。
    2. varEnvevalRealm.[[GlobalEnv]] とする。
    3. privateEnvnull とする。
  18. もし strictEvaltrue なら varEnvlexEnv に設定。
  19. もし runningContext がまだサスペンドされていなければ runningContext をサスペンド。
  20. evalContext を新 ECMAScript コード実行コンテキストとする。
  21. evalContext.Function を null に設定。
  22. evalContext.RealmevalRealm に設定。
  23. evalContext.ScriptOrModule を runningContext.ScriptOrModule に設定。
  24. evalContext.VariableEnvironment を varEnv に設定。
  25. evalContext.LexicalEnvironment を lexEnv に設定。
  26. evalContext.PrivateEnvironment を privateEnv に設定。
  27. evalContext を実行コンテキストスタックにプッシュ;evalContext が実行中実行コンテキストとなる。
  28. resultCompletion(EvalDeclarationInstantiation(body, varEnv, lexEnv, privateEnv, strictEval)) とする。
  29. もし result が通常完了なら
    1. resultCompletion(Evaluation of body) に設定。
  30. もし result が通常完了かつ result.[[Value]]empty なら
    1. resultNormalCompletion(undefined) に設定。
  31. evalContext をサスペンドし実行コンテキストスタックから除去。
  32. スタック最上位のコンテキストを再開。
  33. result を返す。
Note

eval コードは、呼び出し側コンテキストまたは eval コードのどちらか一方でも厳格モードコードである場合、呼び出し側の変数環境に変数や関数束縛をインスタンス化できない。代わりに、それら束縛は eval コードからのみアクセス可能な新しい VariableEnvironment にインスタンス化される。letconstclass 宣言によって導入される束縛は常に新しい LexicalEnvironment にインスタンス化される。

19.2.1.2 HostEnsureCanCompileStrings ( calleeRealm, parameterStrings, bodyString, direct )

The host-defined abstract operation HostEnsureCanCompileStrings takes arguments calleeRealm (Realm Record), parameterStrings (文字列リスト), bodyString (文字列), and direct (Boolean) and returns unused を含む通常完了または throw completion. 開発者が文字列を ECMAScript コードとして解釈・評価できる特定の ECMAScript 関数をホスト環境がブロックすることを可能にする。

parameterStrings は(関数コンストラクタの一つを使用する際)連結されてパラメータリストを組み立てる文字列群を表す。bodyString は関数本体または eval 呼び出しに渡される文字列を表す。 direct は評価が直接 eval かどうかを示す。

HostEnsureCanCompileStrings のデフォルト実装は NormalCompletion(unused) を返す。

19.2.1.3 EvalDeclarationInstantiation ( body, varEnv, lexEnv, privateEnv, strict )

The abstract operation EvalDeclarationInstantiation takes arguments body (ScriptBody Parse Node), varEnv (Environment Record), lexEnv (Declarative Environment Record), privateEnv (PrivateEnvironment Record または null), and strict (Boolean) and returns unused を含む通常完了または throw completion. It performs the following steps when called:

  1. varNamesbody の VarDeclaredNames とする。
  2. varDeclarationsbody の VarScopedDeclarations とする。
  3. もし strictfalse なら
    1. もし varEnvGlobal Environment Record なら
      1. namevarNames について
        1. もし HasLexicalDeclaration(varEnv, name) が true なら SyntaxError 例外を投げる。
        2. 注: eval はグローバル lexical 宣言にシャドーされるグローバル var 宣言を作らない。
    2. thisEnvlexEnv とする。
    3. Assert: 以下のループは終了する。
    4. thisEnvvarEnv が同一 Environment Record でない間繰り返す
      1. もし thisEnvObject Environment Record でなければ
        1. 注: with 文の環境は lexical 宣言を含まないため var/let 衝突検査不要。
        2. namevarNames について
          1. もし ! thisEnv.HasBinding(name) が true なら
            1. Normative Optional
              ホストが Web ブラウザまたは Catch ブロック内の VariableStatements をサポートする場合、
              1. もし thisEnvCatch 節の Environment Record でなければ SyntaxError 例外を投げる。
            2. それ以外
              1. SyntaxError 例外を投げる。
          2. 注: 直接 eval は同名 lexical 宣言を越えて var を巻き上げない。
      2. thisEnvthisEnv.[[OuterEnv]] に設定。
  4. privateIdentifiers を空リストとする。
  5. pointerprivateEnv とする。
  6. pointernull でない間繰り返す
    1. Private Name bindingpointer.[[Names]] について
      1. もし privateIdentifiersbinding.[[Description]] を含まなければ追加。
    2. pointerpointer.[[OuterPrivateEnvironment]] に設定。
  7. AllPrivateIdentifiersValid of body (引数 privateIdentifiers) が false なら SyntaxError 例外。
  8. functionsToInitialize を空リストとする。
  9. declaredFunctionNames を空リストとする。
  10. varDeclarations の各 d を逆順で
    1. もし dVariableDeclaration, ForBinding, BindingIdentifier いずれでもなければ
      1. Assert: dFunctionDeclaration, GeneratorDeclaration, AsyncFunctionDeclaration, AsyncGeneratorDeclaration のいずれか。
      2. 注: 同名関数宣言が複数ある場合、最後が使用される。
      3. fnd の BoundNames の唯一要素とする。
      4. もし declaredFunctionNamesfn を含まなければ
        1. もし varEnvGlobal Environment Record なら
          1. fnDefinable を ? CanDeclareGlobalFunction(varEnv, fn) とする。
          2. もし fnDefinablefalse なら TypeError
        2. fndeclaredFunctionNames に追加。
        3. dfunctionsToInitialize の先頭に挿入。
  11. declaredVarNames を空リストとする。
  12. varDeclarations の各 d について
    1. もし dVariableDeclaration, ForBinding, BindingIdentifier のいずれかなら
      1. 各文字列 vn ∈ BoundNames(d) について
        1. もし declaredFunctionNamesvn を含まなければ
          1. もし varEnvGlobal Environment Record なら
            1. vnDefinable を ? CanDeclareGlobalVar(varEnv, vn) とする。
            2. もし vnDefinablefalse なら TypeError
          2. もし declaredVarNamesvn を含まなければ追加。
  13. Normative Optional
    もし strictfalse かつホストが Web ブラウザまたは ブロックレベル Function 宣言 (Web レガシー互換意味論) をサポートするなら
    1. declaredFunctionOrVarNamesdeclaredFunctionNamesdeclaredVarNames の連結とする。
    2. body Contains xtrue となる任意の Block, CaseClause, DefaultClause xStatementList に直接含まれる各 FunctionDeclaration f について
      1. FfBindingIdentifier の StringValue とする。
      2. FunctionDeclaration fBindingIdentifierFVariableStatement に置換しても body に早期エラーが生じないなら
        1. bindingExistsfalse とする。
        2. thisEnvlexEnv とする。
        3. Assert: 以下のループは終了。
        4. thisEnvvarEnv の間繰り返す
          1. もし thisEnvObject Environment Record でなければ
            1. もし ! thisEnv.HasBinding(F) が true なら
              1. Normative Optional
                ホストが Web ブラウザまたは Catch ブロック内の VariableStatements をサポートするなら
                1. もし thisEnvCatch 節の Environment Record でなければ bindingExiststrue に設定。
              2. それ以外
                1. bindingExiststrue に設定。
          2. thisEnvthisEnv.[[OuterEnv]] に設定。
        5. もし bindingExistsfalse かつ varEnvGlobal Environment Record なら
          1. もし HasLexicalDeclaration(varEnv, F) が false なら
            1. fnDefinable を ? CanDeclareGlobalVar(varEnv, F) とする。
          2. それ以外
            1. fnDefinablefalse とする。
        6. それ以外
          1. fnDefinabletrue とする。
        7. もし bindingExistsfalse かつ fnDefinabletrue なら
          1. もし declaredFunctionOrVarNamesF を含まなければ
            1. もし varEnvGlobal Environment Record なら
              1. CreateGlobalVarBinding(varEnv, F, true) を実行。
            2. それ以外
              1. bindingExists を ! varEnv.HasBinding(F) とする。
              2. もし bindingExistsfalse なら
                1. varEnv.CreateMutableBinding(F, true)。
                2. varEnv.InitializeBinding(F, undefined)。
            3. FdeclaredFunctionOrVarNames に追加。
          2. FunctionDeclaration f を評価する際、15.2.6 で規定される FunctionDeclaration 評価アルゴリズムの代わりに次を行う:
            1. gEnv を実行中実行コンテキストの VariableEnvironment とする。
            2. bEnv を実行中実行コンテキストの LexicalEnvironment とする。
            3. fObj を ! bEnv.GetBindingValue(F, false) とする。
            4. gEnv.SetMutableBinding(F, fObj, false) を実行。
            5. unused を返す。
  14. 注: このアルゴリズムステップ以降は、varEnvGlobal Environment Record かつグローバルオブジェクトが Proxy exotic でない限り異常終了しない。
  15. lexDeclarationsbody の LexicallyScopedDeclarations とする。
  16. dlexDeclarations について
    1. 注: 字句的宣言名はここでインスタンス化されるが初期化されない。
    2. dn ∈ BoundNames(d) について
      1. もし IsConstantDeclaration(d) が true なら
        1. lexEnv.CreateImmutableBinding(dn, true) を実行。
      2. それ以外
        1. lexEnv.CreateMutableBinding(dn, false) を実行。
  17. 各 Parse Node ffunctionsToInitialize について
    1. fn を BoundNames(f) の唯一要素とする。
    2. fo を InstantiateFunctionObject(f, lexEnv, privateEnv) とする。
    3. もし varEnvGlobal Environment Record なら
      1. CreateGlobalFunctionBinding(varEnv, fn, fo, true) を実行。
    4. それ以外
      1. bindingExists を ! varEnv.HasBinding(fn) とする。
      2. もし bindingExistsfalse なら
        1. 注: 前段階の検証により以下は異常終了を返さない。
        2. varEnv.CreateMutableBinding(fn, true)。
        3. varEnv.InitializeBinding(fn, fo)。
      3. それ以外
        1. varEnv.SetMutableBinding(fn, fo, false)。
  18. 各文字列 vndeclaredVarNames について
    1. もし varEnvGlobal Environment Record なら
      1. CreateGlobalVarBinding(varEnv, vn, true) を実行。
    2. それ以外
      1. bindingExists を ! varEnv.HasBinding(vn) とする。
      2. もし bindingExistsfalse なら
        1. 注: 前段階の検証により以下は異常終了しない。
        2. varEnv.CreateMutableBinding(vn, true)。
        3. varEnv.InitializeBinding(vn, undefined)。
  19. unused を返す。

19.2.2 isFinite ( number )

この関数は %isFinite% 組み込みオブジェクトである。

呼び出されたとき次を実行:

  1. num を ? ToNumber(number) とする。
  2. もし num有限でなければ false を返す。
  3. それ以外 true を返す。

19.2.3 isNaN ( number )

この関数は %isNaN% 組み込みオブジェクトである。

呼び出されたとき次を実行:

  1. num を ? ToNumber(number) とする。
  2. もし numNaN なら true を返す。
  3. それ以外 false を返す。
Note

XNaN かどうかを ECMAScript コードで信頼性高く判定する方法は、X !== X という形式の式である。結果は XNaN のときかつそのときのみ true となる。

19.2.4 parseFloat ( string )

この関数は string 引数の内容を 10 進リテラルとして解釈した結果により Number 値を生成する。

これは %parseFloat% 組み込みオブジェクトである。

呼び出されたとき次を実行:

  1. inputString を ? ToString(string) とする。
  2. trimmedString を ! TrimString(inputString, start) とする。
  3. trimmed を StringToCodePoints(trimmedString) とする。
  4. trimmedPrefixStrDecimalLiteral の構文を満たす最長接頭辞(trimmed 自身の場合もある)とする。存在しなければ NaN を返す。
  5. parsedNumber を ParseText(trimmedPrefix, StrDecimalLiteral) とする。
  6. Assert: parsedNumber は Parse Node。
  7. parsedNumber の StringNumericValue を返す。
Note

この関数は string の先頭部分のみを Number 値として解釈する場合がある;10 進リテラル記法の一部として解釈できないコード単位は無視され、それらが無視されたことは通知されない。

19.2.5 parseInt ( string, radix )

この関数は指定された radix に従って string の内容を解釈した結果により整数 Number を生成する。string 先頭の空白は無視される。radix が 0 に強制変換される(undefined など)場合、数表現が "0x" または "0X" で始まる場合を除き 10 とみなす。その場合は 16 とみなす。radix が 16 の場合、数表現は任意で "0x" または "0X" で始まり得る。

これは %parseInt% 組み込みオブジェクトである。

呼び出されたとき次を実行:

  1. inputString を ? ToString(string) とする。
  2. S を ! TrimString(inputString, start) とする。
  3. sign を 1 とする。
  4. もし S が空でなく先頭コード単位が 0x002D (HYPHEN-MINUS) なら sign を -1 に設定。
  5. もし S が空でなく先頭コード単位が 0x002B (PLUS SIGN) または 0x002D (HYPHEN-MINUS) なら S を先頭 1 文字除去後の部分文字列に設定。
  6. R(? ToInt32(radix)) とする。
  7. stripPrefixtrue とする。
  8. もし R ≠ 0 なら
    1. もし R < 2 または R > 36 なら NaN を返す。
    2. もし R ≠ 16 なら stripPrefixfalse に設定。
  9. それ以外
    1. R を 10 に設定。
  10. もし stripPrefixtrue なら
    1. もし S の長さが少なくとも 2 で先頭 2 コード単位が "0x" または "0X" なら
      1. S をインデックス 2 以降の部分文字列に設定。
      2. R を 16 に設定。
  11. もし S が radix-R の数字でないコード単位を含むなら end をその最初の位置、そうでなければ endS の長さとする。
  12. ZS の 0 から end までの部分文字列とする。
  13. もし Z が空なら NaN を返す。
  14. mathIntZ が radix-R 表記で表す整数値とする(10〜35 に値を持つ数字には大文字 AZ および小文字 az を使用)。(ただし R=10 で Z が 20 を超える有効桁を含む場合、20 桁目以降の各有効桁は実装選択で 0 に置き換えてよく、かつ R が 2,4,8,10,16,32 のいずれでもない場合、mathIntZ の値を表す実装近似整数でよい。)
  15. もし mathInt = 0 なら
    1. もし sign = -1 なら -0𝔽 を返す。
    2. +0𝔽 を返す。
  16. 𝔽(sign × mathInt) を返す。
Note

この関数は string の先頭部分のみを整数値として解釈する場合がある;整数表記の一部と解釈できないコード単位は無視され、それらが無視されたことは通知されない。

19.2.6 URI 取扱関数

Uniform Resource Identifier (URI) は(ウェブページやファイル等の)リソースや、それへアクセスするための転送プロトコル(HTTP や FTP など)をインターネット上で識別する文字列である。ECMAScript 言語自体は、本節で説明されるように URI をエンコードおよびデコードする関数を除き URI 使用のためのサポートを提供しない。encodeURIdecodeURI は完全な URI を扱うことを意図し、予約文字は特別な意味(区切りなど)を持つことを前提としてエンコードしない。encodeURIComponentdecodeURIComponent は URI の個々の構成要素を扱うことを意図し、予約文字がテキストを表し完全な URI の一部となるときに特別な意味を持たないようエンコードされるべきであると仮定する。

Note 1

予約文字集合は RFC 2396 に基づき、より新しい RFC 3986 による変更を反映していない。

Note 2

ECMAScript の多くの実装はウェブページを操作する追加関数やメソッドを提供する;それらは本標準の範囲外である。

19.2.6.1 decodeURI ( encodedURI )

この関数は、encodeURI 関数によって導入された可能性がある種類の各エスケープシーケンスおよび UTF-8 エンコーディングを、その表すコードポイントの UTF-16 エンコーディングへ置換した新しいバージョンの URI を計算する。encodeURI によって導入され得なかったエスケープシーケンスは置換されない。

これは %decodeURI% 組み込みオブジェクトである。

呼び出されたとき次を実行:

  1. uriString を ? ToString(encodedURI) とする。
  2. preserveEscapeSet";/?:@&=+$,#" とする。
  3. Decode(uriString, preserveEscapeSet) を返す。

19.2.6.2 decodeURIComponent ( encodedURIComponent )

この関数は、encodeURIComponent によって導入された可能性がある各エスケープシーケンスおよび UTF-8 エンコーディングを、その表すコードポイントの UTF-16 エンコーディングへ置換した新しいバージョンの URI を計算する。

これは %decodeURIComponent% 組み込みオブジェクトである。

呼び出されたとき次を実行:

  1. componentString を ? ToString(encodedURIComponent) とする。
  2. preserveEscapeSet を空文字列とする。
  3. Decode(componentString, preserveEscapeSet) を返す。

19.2.6.3 encodeURI ( uri )

この関数は、UTF-16 エンコード (6.1.4) された URI の新しいバージョンを計算し、特定コードポイントの各出現を、そのコードポイントの UTF-8 エンコーディングを表す 1〜4 個のエスケープシーケンスへ置換する。

これは %encodeURI% 組み込みオブジェクトである。

呼び出されたとき次を実行:

  1. uriString を ? ToString(uri) とする。
  2. extraUnescaped";/?:@&=+$,#" とする。
  3. Encode(uriString, extraUnescaped) を返す。

19.2.6.4 encodeURIComponent ( uriComponent )

この関数は、UTF-16 エンコード (6.1.4) された URI 構成要素の新しいバージョンを計算し、特定コードポイントの各出現を、そのコードポイントの UTF-8 エンコーディングを表す 1〜4 個のエスケープシーケンスへ置換する。

これは %encodeURIComponent% 組み込みオブジェクトである。

呼び出されたとき次を実行:

  1. componentString を ? ToString(uriComponent) とする。
  2. extraUnescaped を空文字列とする。
  3. Encode(componentString, extraUnescaped) を返す。

19.2.6.5 Encode ( string, extraUnescaped )

The abstract operation Encode takes arguments string (文字列) and extraUnescaped (文字列) and returns 文字列を含む通常完了または throw completion. string6.1.4 に記述される UTF-16 エンコードされたコードポイント列とみなし URI エンコードとエスケープを行う。文字が RFC 2396 で非予約 (unreserved) と識別されるか extraUnescaped に現れる場合はエスケープされない。 It performs the following steps when called:

  1. lenstring の長さとする。
  2. R を空文字列とする。
  3. alwaysUnescaped を ASCII 単語文字列と "-.!~*'()" の連結とする。
  4. unescapedSetalwaysUnescapedextraUnescaped の連結とする。
  5. k を 0 とする。
  6. k < len の間繰り返す
    1. Cstring のインデックス k のコード単位とする。
    2. もし unescapedSetC を含むなら
      1. kk + 1 に。
      2. RRC の連結に。
    3. それ以外
      1. cp を CodePointAt(string, k) とする。
      2. もし cp.[[IsUnpairedSurrogate]]true なら URIError 例外。
      3. kk + cp.[[CodeUnitCount]] に。
      4. Octetscp.[[CodePoint]] に UTF-8 変換を適用して得るオクテット列とする。
      5. octetOctets について
        1. hexoctet の 16 進大文字表現文字列とする。
        2. RR"%"StringPad(hex, 2, "0", start) の連結に。
  7. R を返す。
Note

パーセントエンコーディングは個々のオクテットを表すため、単一のコードポイントが複数連続エスケープシーケンス(その UTF-8 コードユニット毎に 1 つ)で表現され得る。

19.2.6.6 Decode ( string, preserveEscapeSet )

The abstract operation Decode takes arguments string (文字列) and preserveEscapeSet (文字列) and returns 文字列を含む通常完了または throw completion. preserveEscapeSet 内の Basic Latin 文字に対応するエスケープシーケンスを保持しつつ URI のアンエスケープとデコードを行う。 It performs the following steps when called:

  1. lenstring の長さとする。
  2. R を空文字列とする。
  3. k を 0 とする。
  4. k < len の間繰り返す
    1. Cstring のインデックス k のコード単位とする。
    2. SC とする。
    3. もし C がコード単位 0x0025 (PERCENT SIGN) なら
      1. もし k + 3 > len なら URIError 例外。
      2. escapestringk から k + 3 までの部分文字列とする。
      3. BParseHexOctet(string, k + 1) とする。
      4. もし B整数でなければ URIError 例外。
      5. kk + 2 に。
      6. nB の先頭連続 1 ビット数とする。
      7. もし n = 0 なら
        1. asciiChar を数値が B のコード単位とする。
        2. もし preserveEscapeSetasciiChar を含むなら Sescape に、そうでなければ SasciiChar に設定。
      8. それ以外
        1. もし n = 1 または n > 4 なら URIError 例外。
        2. Octets を « B » とする。
        3. j を 1 とする。
        4. j < n の間繰り返す
          1. kk + 1 に。
          2. もし k + 3 > len なら URIError 例外。
          3. もし string のインデックス k のコード単位が 0x0025 でなければ URIError 例外。
          4. continuationByteParseHexOctet(string, k + 1) とする。
          5. もし continuationByte整数でなければ URIError 例外。
          6. continuationByteOctets に追加。
          7. kk + 2 に。
          8. jj + 1 に。
        5. Assert: Octets の長さは n
        6. もし Octets が Unicode コードポイントの有効な UTF-8 エンコーディングを含まなければ URIError 例外。
        7. VOctets に UTF-8 変換を適用して得るコードポイント(オクテット列から 21 ビット値)とする。
        8. S を UTF16EncodeCodePoint(V) に設定。
    4. RRS の連結に。
    5. kk + 1 に。
  5. R を返す。
Note

RFC 3629 は無効な UTF-8 オクテットシーケンスのデコードを禁止する。例えば無効なシーケンス 0xC0 0x80 はコード単位 0x0000 にデコードされてはならない。Decode アルゴリズムの実装は、そのような無効シーケンスに遭遇した際 URIError を投げる必要がある。

19.2.6.7 ParseHexOctet ( string, position )

The abstract operation ParseHexOctet takes arguments string (文字列) and position (非負整数) and returns 非負整数または SyntaxError オブジェクトの空でないリスト. string の指定 position にある 2 つの 16 進文字を符号なし 8 ビット整数にパースする。 It performs the following steps when called:

  1. lenstring の長さとする。
  2. Assert: position + 2 ≤ len
  3. hexDigitsstringposition から position + 2 までの部分文字列とする。
  4. parseResult を ParseText(hexDigits, HexDigits[~Sep]) とする。
  5. もし parseResult が Parse Node でなければ parseResult を返す。
  6. nparseResult の MV とする。
  7. Assert: n は 0 から 255 の閉区間内。
  8. n を返す。

19.3 グローバルオブジェクトのコンストラクタプロパティ

19.3.1 AggregateError ( . . . )

20.5.7.1 を参照。

19.3.2 Array ( . . . )

23.1.1 を参照。

19.3.3 ArrayBuffer ( . . . )

25.1.4 を参照。

19.3.4 BigInt ( . . . )

21.2.1 を参照。

19.3.5 BigInt64Array ( . . . )

23.2.5 を参照。

19.3.6 BigUint64Array ( . . . )

23.2.5 を参照。

19.3.7 Boolean ( . . . )

20.3.1 を参照。

19.3.8 DataView ( . . . )

25.3.2 を参照。

19.3.9 Date ( . . . )

21.4.2 を参照。

19.3.10 Error ( . . . )

20.5.1 を参照。

19.3.11 EvalError ( . . . )

20.5.5.1 を参照。

19.3.12 FinalizationRegistry ( . . . )

26.2.1 を参照。

19.3.13 Float16Array ( . . . )

23.2.5 を参照。

19.3.14 Float32Array ( . . . )

23.2.5 を参照。

19.3.15 Float64Array ( . . . )

23.2.5 を参照。

19.3.16 Function ( . . . )

20.2.1 を参照。

19.3.17 Int8Array ( . . . )

23.2.5 を参照。

19.3.18 Int16Array ( . . . )

23.2.5 を参照。

19.3.19 Int32Array ( . . . )

23.2.5 を参照。

19.3.20 Iterator ( . . . )

27.1.3.1 を参照。

19.3.21 Map ( . . . )

24.1.1 を参照。

19.3.22 Number ( . . . )

21.1.1 を参照。

19.3.23 Object ( . . . )

20.1.1 を参照。

19.3.24 Promise ( . . . )

27.2.3 を参照。

19.3.25 Proxy ( . . . )

28.2.1 を参照。

19.3.26 RangeError ( . . . )

20.5.5.2 を参照。

19.3.27 ReferenceError ( . . . )

20.5.5.3 を参照。

19.3.28 RegExp ( . . . )

22.2.4 を参照。

19.3.29 Set ( . . . )

24.2.2 を参照。

19.3.30 SharedArrayBuffer ( . . . )

25.2.3 を参照。

19.3.31 String ( . . . )

22.1.1 を参照。

19.3.32 Symbol ( . . . )

20.4.1 を参照。

19.3.33 SyntaxError ( . . . )

20.5.5.4 を参照。

19.3.34 TypeError ( . . . )

20.5.5.5 を参照。

19.3.35 Uint8Array ( . . . )

23.2.5 を参照。

19.3.36 Uint8ClampedArray ( . . . )

23.2.5 を参照。

19.3.37 Uint16Array ( . . . )

23.2.5 を参照。

19.3.38 Uint32Array ( . . . )

23.2.5 を参照。

19.3.39 URIError ( . . . )

20.5.5.6 を参照。

19.3.40 WeakMap ( . . . )

24.3.1 を参照。

19.3.41 WeakRef ( . . . )

26.1.1 を参照。

19.3.42 WeakSet ( . . . )

24.4 を参照。

19.4 グローバルオブジェクトのその他のプロパティ

19.4.1 Atomics

25.4 を参照。

19.4.2 JSON

25.5 を参照。

19.4.3 Math

21.3 を参照。

19.4.4 Reflect

28.1 を参照。