グローバルオブジェクトは、次の特徴を持っています。
- コントロールが実行コンテキストトに入る前に作成されます。
- [[Construct]]内部メソッドがありません。そのため、new演算子のコンストラクターとして使用することはできません。
- [[Call]]内部メソッドがありません。 そのため、関数として呼び出すことができません。
- [[Prototype]]内部スロットがあり、その値は実装に依存します。
- この仕様で定義されているプロパティの他に、ホストで定義されたプロパティを持つ場合があります。 これには、値がグローバルオブジェクト自体であるプロパティが含まれる場合があります。
18.1 グローバルオブジェクトの値プロパティ(Value Properties of the Global Object)
18.1.1 globalThis
レルムレコードrealm内のグローバルオブジェクトの "globalThis" プロパティの初期値はrealm.[[GlobalEnv]]のEnvironmentRecordの[[GlobalThisValue]]です。
このプロパティの属性は{[[Writable]]:true,[[Enumerable]]:false,[[Configurable]]:true}です。
18.1.2 Infinity
Infinityの値は+∞です(6.1.6.1を参照)。 このプロパティの属性は{[[Writable]]:false,[[Enumerable]]:false,[[Configurable]]:false}です。
18.1.3 NaN
NaNの値はNaNです(6.1.6.1を参照)。 このプロパティの属性は{[[Writable]]:false,[[Enumerable]]:false,[[Configurable]]:false}です。
18.1.4 undefined
undefinedの値はundefinedです(6.1.1を参照)。 このプロパティの属性は{[[Writable]]:false,[[Enumerable]]:false,[[Configurable]]:false}です。
18.2 グローバルオブジェクトの関数プロパティ(Function Properties of the Global Object)
18.2.1 eval ( x )
eval関数は%eval%組み込みオブジェクトです。 引数xを指定してeval関数を呼び出すと、次の手順が実行されます。
- Assert: 実行コンテキストスタック は2つ以上の要素がある
- 実行コンテキストスタック の 上から2番目の要素を callerContext とする
- callerContext の レルム を callerRealm とする
- ? PerformEval(x, callerRealm, false, false) を返す
18.2.1.1 ランタイムセマンティクス(Runtime Semantics): PerformEval ( x, callerRealm, strictCaller, direct )
引数x, callerRealm, strictCaller, directを指定した抽象操作PerformEvalは、次の手順を実行します。
- Assert: direct が false なら、 strictCaller は false
- Type(x) が String型 でないなら、 x を返す
- 現在のレルムレコード を evalRealm とする
- ? HostEnsureCanCompileStrings(callerRealm, evalRealm) を実行する
- ! GetThisEnvironment() を thisEnvRec とする
- thisEnvRec が 関数環境レコード なら、
- thisEnvRec.[[FunctionObject]] を F とする
- true を inFunction とする
- thisEnvRec. HasSuperBinding() を inMethod とする
- F.[[ConstructorKind]] が derived なら、 true を inDerivedConstructor とする。異なるなら、false を inDerivedConstructor とする
- 6. と異なるなら、
- false を inFunction とする
- false を inMethod とする
- false を inDerivedConstructor とする
- 次のサブステップを実装に依存する順序で実行する。解析とエラー検出をインターリーブする可能性があります。
- Scriptをゴールシンボルとし、! UTF16DecodeString(x) の解析結果のECMAScriptコードをscript とする。解析が失敗した場合は、SyntaxError例外をスローする。 早期エラーが検出された場合は、SyntaxError例外をスローする(ただし、16章も参照)。
- script Contains ScriptBody が false なら、 undefined を返す
- script の ScriptBody を body とする
- inFunction が false で body Contains NewTarget なら SyntaxError例外をスローする
- inMethod が false で body Contains SuperProperty なら、 SyntaxError例外をスローする
- inDerivedConstructor が false で body Contains SuperCall なら、 SyntaxError例外をスローする
- strictCaller が true なら、 true を strictEval とする
- 9. と異なるなら、script の IsStrict を strictEval とする
- 実行中の実行コンテキスト を runningContext とする
- NOTE: runningContext は direct が true なら、ダイレクトevalを実行した実行コンテキスト。 false なら、 eval関数の呼び出しの実行コンテキスト
- direct が true なら、
- NewDeclarativeEnvironment(runningContext の LexicalEnvironmentコンポーネント) を lexEnv とする
- runningContext の VariableEnvironmentコンポーネント を varEnv とする
- 13. と異なるなら、
- NewDeclarativeEnvironment(evalRealm.[[GlobalEnv]]) を lexEnv とする
- evalRealm.[[GlobalEnv]] を varEnv とする
- strictEval が true なら、 lexEnv を varEnv にセットする
- runningContext が suspend していないなら、 runningContext を suspend する
- 新規 ECMAScriptコード実行コンテキスト を evalContext とする
- null を evalContext の Functionコンポーネント にセットする
- evalRealm を evalContext の Realmコンポーネント にセットする
- runningContext の ScriptOrModuleコンポーネント を evalContext の ScriptOrModuleコンポーネント にセットする
- varEnv を evalContext の VariableEnvironmentコンポーネント にセットする
- lexEnv を evalContext の LexicalEnvironmentコンポーネント にセットする
- evalContext を 実行コンテキストスタック にプッシュする。evalContext が 実行中の実行コンテキスト になる
- EvalDeclarationInstantiation(body, varEnv, lexEnv, strictEval) を result とする
- result.[[Type]] が normal なら、
- body の評価結果を result にセットする
- result.[[Type]] が normal で result.[[Value]] が empty なら、
- NormalCompletion(undefined) を result にセットする
- evalContext を Suspend し、実行コンテキストスタックから削除する
- 実行コンテキストスタックの最上位にあるコンテキストを実行中の実行コンテキストとして再開する
- Completion(result) を返す
18.2.1.2 HostEnsureCanCompileStrings ( callerRealm, calleeRealm )
HostEnsureCanCompileStringsは、開発者が文字列をECMAScriptコードにコンパイルできるようにする特定のECMAScript関数を、ホスト環境がブロックできるようにする、実装定義の抽象操作です。
HostEnsureCanCompileStringsの実装は、正常に完了することも、突然の完了することもあります。 突然の完了は、その呼び出し元に伝播されます。 HostEnsureCanCompileStringsのデフォルトの実装は、空の通常の完了を無条件に返すことです。
18.2.1.3 ランタイムセマンティクス(Runtime Semantics): EvalDeclarationInstantiation ( body, varEnv, lexEnv, strict )
抽象操作EvalDeclarationInstantiationが引数body, varEnv, lexEnv, strictを指定して呼び出されると、次の手順が実行されます。
- body の VarDeclaredNames を varNames とする
- body の VarScopedDeclarations を varDeclarations とする
- lexEnv の EnvironmentRecord を lexEnvRec とする
- varEnv の EnvironmentRecord を varEnvRec とする
- strict が false なら、
- varEnvRec が グローバル環境レコード なら、
- varNames の 各要素を name とし、name ごとに次を実行する
- varEnvRec.HasLexicalDeclaration(name) が true なら SyntaxError例外をスローする
- NOTE: evalは、グローバルレキシカル宣言によってシャドウされるグローバル変数宣言を作成しない
- varNames の 各要素を name とし、name ごとに次を実行する
- lexEnv を thisLex とする
- Assert: 次のループは終了する
- thisLex と varEnv が同じでない間繰り返し
- thisLex の EnvironmentRecord を thisEnvRec とする
- thisEnvRec が オブジェクト環境レコード でないなら、
- NOTE: withステートメントの環境にはレキシカル宣言を含めることができないため、var/letホイストの競合をチェックする必要がない
- varNames の 各要素を name とし、name ごとに次を実行する
- thisEnvRec.HasBinding(name) が true なら、
- SyntaxError例外をスローする
- NOTE: 付録 B.3.5 に、上記のステップの代替セマンティクスを定義されている
- NOTE: A ダイレクトeval は同名のレキシカル宣言に対して var宣言を上書きしない
- thisEnvRec.HasBinding(name) が true なら、
- thisLex の外部環境参照を thisLex にセットする
- varEnvRec が グローバル環境レコード なら、
- 空の新規List を functionsToInitialize とする
- 空の新規List を declaredFunctionNames とする
- varDeclarations 内の 各要素を d とし、リストの逆順で次を実行する
- d が VariableDeclaration 、 ForBinding 、 BindingIdentifier のどれでもないなら、
- Assert: d は FunctionDeclaration 、 GeneratorDeclaration 、 AsyncFunctionDeclaration 、 AsyncGeneratorDeclaration のどれか
- NOTE: 同名の関数宣言が複数あるなら、最後の宣言が使用される
- d の BoundNames の唯一の要素を fn とする
- fn が declaredFunctionNames の要素でないなら、
- varEnvRec が グローバル環境レコード なら、
- ? varEnvRec.CanDeclareGlobalFunction(fn) を fnDefinable とする
- fnDefinable が false なら TypeError例外をスローする
- declaredFunctionNames に fn を追加する
- functionsToInitialize の最初に d を挿入する
- varEnvRec が グローバル環境レコード なら、
- d が VariableDeclaration 、 ForBinding 、 BindingIdentifier のどれでもないなら、
- NOTE: 付録B.3.3.3に、この時点で追加手順あり
- 空の新規List を declaredVarNames とする
- varDeclarations の 各要素を d とし、d ごとに次を実行する
- d が VariableDeclaration 、 ForBinding 、 BindingIdentifier のどれかなら、
- d の BoundNames 内の 各Stringを vn とし、vn ごとに次を実行する
- vn が declaredFunctionNames の要素でないなら、
- varEnvRec が a グローバル環境レコード なら、
- ? varEnvRec.CanDeclareGlobalVar(vn) を vnDefinable とする
- vnDefinable が false なら、 TypeError例外をスローする
- vn が declaredVarNames の要素でないなら、
- declaredVarNames に vn を追加する
- varEnvRec が a グローバル環境レコード なら、
- vn が declaredFunctionNames の要素でないなら、
- d の BoundNames 内の 各Stringを vn とし、vn ごとに次を実行する
- d が VariableDeclaration 、 ForBinding 、 BindingIdentifier のどれかなら、
- NOTE: varEnvRec が グローバル環境レコード かつグローバルオブジェクト が Proxyエキゾチックオブジェクト でないとき、この後に異常終了が発生しない
- body の LexicallyScopedDeclarations を lexDeclarations とする
- lexDeclarations の 各要素を d とし、d ごとに次を実行する
- NOTE: ここでは、レキシカル宣言された名前はインスタンス化されるだけ。初期化はされない
- d の BoundNames の 各要素を dn とし、dn ごとに次を実行する
- d の IsConstantDeclaration が true なら、
- ? lexEnvRec.CreateImmutableBinding(dn, true) を実行する
- i. と異なるなら、
- ? lexEnvRec.CreateMutableBinding(dn, false) を実行する
- d の IsConstantDeclaration が true なら、
- functionsToInitialize の各パースノードを f とし、 f ごとに次を実行する
- f の BoundNames の唯一の要素を fn とする
- 引数 lexEnv を使用して f の InstantiateFunctionObject を fo とする
- varEnvRec が グローバル環境レコード なら、
- ? varEnvRec.CreateGlobalFunctionBinding(fn, fo, true) を実行する
- c. と異なるなら、
- varEnvRec.HasBinding(fn) を bindingExists とする
- bindingExists が false なら、
- ! varEnvRec. CreateMutableBinding(fn, true) を status とする
- Assert: status は突然の完了ではない(手順12の前に検証が行われたため)
- ! varEnvRec.InitializeBinding(fn, fo) を実行する
- ii. と異なるなら、
- ! varEnvRec.SetMutableBinding(fn, fo, false) を実行する
- declaredVarNames の各String要素を vn とし、 リスト順で vn ごとに次を実行する
- varEnvRec が グローバル環境レコード なら、
- ? varEnvRec.CreateGlobalVarBinding(vn, true) を実行する
- a. と異なるなら、
- varEnvRec.HasBinding(vn) を bindingExists とする
- bindingExists が false なら、
- ! varEnvRec.CreateMutableBinding(vn, true) を status とする
- Assert: status は突然の完了ではない(手順12の前に検証が行われたため)
- ! varEnvRec.InitializeBinding(vn, undefined) を実行する
- varEnvRec が グローバル環境レコード なら、
- NormalCompletion(empty) を返す
18.2.2 isFinite ( number )
isFinite関数は、%isFinite%組み込みオブジェクトです。 isFinite関数が引数numberで呼び出されると、次の手順が実行されます。
18.2.3 isNaN ( number )
sNaN関数は、%isNaN%組み込みオブジェクトです。 isNaN関数が引数numberで呼び出されると、次の手順が実行されます。
18.2.4 parseFloat ( string )
parseFloat関数は、引数stringの内容を10進リテラルとして解釈し、数値を生成します。
parseFloat関数は、%parseFloat%組み込みオブジェクトです。 parseFloat関数が引数stringで呼び出されると、次の手順が実行されます。
- ? ToString(string) を inputString とする
- ! TrimString(inputString, start) を trimmedString とする
- trimmedString または trimmedStringのプレフィックスが、StrDecimalLiteralの構文(7.1.4.1 を参照)を満たさないなら、NaNを返す
- trimmedStringの最長のプレフィックスを numberString とする。これは、StrDecimalLiteralの構文を満たす、trimmedString自体である可能性がある
- numberString の MV を mathFloat とする
- mathFloat = 0 なら、
- trimmedString の 最初のコードユニット が 0x002D ("-":HYPHEN-MINUS) なら、 -0 を返す
- +0 を返す
- mathFloat の 数値 を返す
18.2.5 parseInt ( string, radix )
parseInt関数は、基数radixに従ってstringの内容を解釈し整数値を生成します。 先頭の空白は無視されます。 radixがundefinedまたは0の場合、stringが基数16を意味する0xまたは0Xで始まる場合を除いて、10と見なされます。 radixが16で、stringが0xまたは0Xで始まる場合もあります。
parseInt関数は、%parseInt%組み込みオブジェクトです。 parseInt関数が呼び出されると、次の手順が実行されます。
- ? ToString(string) を inputString とする
- ! TrimString(inputString, start) を S とする
- 1 を sign とする
- S が empty でなく S の最初のコードユニットが 0x002D ("-":HYPHEN-MINUS) なら、 -1 を sign にセットする
- S が empty でなく、 S の最初のコードユニットが 0x002B ("+":PLUS SIGN) または 0x002D ("-":HYPHEN-MINUS) でないなら、 S から 最初のコードユニットを削除する
- ? ToInt32(radix) を R とする
- true を stripPrefix とする
- R ≠ 0 なら、
- R < 2 または R > 36 なら、 NaN を返す
- R ≠ 16, false を stripPrefix にセットする
- 8. と異なるなら、
- 10 を R にセットする
- stripPrefix が true なら、
- S の長さが2以上で、 Sの最初の2つのコードユニットが "0x" または "0X" なら、
- S から 最初の2つのコードユニットを削除する
- 16 を R にセットする
- S の長さが2以上で、 Sの最初の2つのコードユニットが "0x" または "0X" なら、
- S に基数 R として有効でないコードユニットが含まれているなら、Sの先頭から有効でない文字の手前までのコードユニットを Z とする。 それ以外なら、S を Z とする
- Z が empty なら、 NaN を返す
- 基数 R 表記の Z で表される数学的整数値を mathInt とする。このとき、値が10から35は数字にA-Zとa-zの文字を使用する(ただし、Rが10で、Zの有効数字が20桁を超える場合は、実装のオプションで、20番目以降のすべての有効数字を0に置き換えることができる。 Rが2、4、8、10、16、32でない場合、mathIntは、基数R表記のZで表される数学整数値の実装に依存する近似値になる可能性がある。)
- mathInt = 0 なら、
- sign = -1 なら、 -0 を返す
- +0 を返す
- mathInt の 数値 を number とする
- sign × number を返す
18.2.6 URI処理関数(URI Handling Functions)
ユニフォームリソース識別子(URI)は、インターネット上でリソース(Webページやファイルなど)とそれらにアクセスするためのトランスポートプロトコル(HTTPやFTPなど)を識別する文字列です。 ECMAScript言語自体は、18.2.6.2、18.2.6.3、18.2.6.4、および18.2.6.5で説明されているようにURIをエンコードおよびデコードする関数を除いて、URIの使用をサポートしていません。
18.2.6.1 URI構文とセマンティクス(URI Syntax and Semantics)
URIは、区切り文字で区切られた一連のコンポーネントで構成されます。 一般的な形式は次のとおりです。
Scheme : First / Second ; Third ? Fourth
ここで、イタリック体の名前はコンポーネントを表します。":"、 "/"、";" 、"?" はセパレータとして使用するために予約されています。 encodeURIおよびdecodeURI関数は、URIが完全であることが前提です。 URI内の予約済みコードユニットは特別な意味を持つことを意図しているため、エンコードされていないと想定しています。 encodeURIComponent関数とdecodeURIComponent関数は、URIの個々のコンポーネント部分を操作します。 予約済みのコードユニットはテキストを表すと想定しています。コンポーネントが完全なURIの一部である場合、予約済みのコードユニットとして解釈されないようにエンコードする必要があります。
次のレキシカル文法は、エンコードされたURIの形式を指定します。
構文:
uri :::
uriReserved ::: どれかひとつ
uriEscaped :::
uriAlpha ::: どれかひとつ
uriMark ::: どれかひとつ
ランタイムセマンティクス
URIに含まれるコードユニットが上記にリストされていない、または予約済みコードユニットに特別な意味を与えることを意図していない場合は、そのコードユニットをエンコードする必要があります。 コードユニットはUTF-8エンコーディングに変換され、サロゲートペアはUTF-16から対応するコードポイント値に変換されます。 ([0,127]の範囲のコードユニットの場合、これにより同じ値の単一のオクテットが生成されることに注意してください。)次に、結果のオクテットのシーケンスが文字列に変換され、各オクテットは"%xx"の形式のエスケープシーケンスで表されます。
18.2.6.1.1 ランタイムセマンティクス(Runtime Semantics): Encode ( string, unescapedSet )
エンコードとエスケープ処理は、2つの文字列引数stringとunescapedSetを使用する抽象操作Encodeによって記述されます。
The encoding and escaping process is described by the abstract operation Encode taking two String arguments string and unescapedSet.
- string のコードユニット数を strLen とする
- empty String を R とする
- 0 を k とする
- 繰り返し
- k イコール strLen なら、 return R
- string のインデックス k のコードユニットを C とする
- C が unescapedSet にあるなら、
- k + 1 を k にセットする
- R と C を連結したものを R にセットする
- c. と異なるなら、
- ! CodePointAt(string, k) を cp とする
- cp.[[IsUnpairedSurrogate]] が true なら、URIError例外をスローする
- k + cp.[[CodeUnitCount]] を k にセットする
- cp.[[CodePoint]]にUTF-8変換を適用した結果のリストを Octets とする
- Octets の 各要素を octet とし、リスト順で octet ごとに次を実行する
- 次の文字列を順番に連結したものを R にセットする
- R
- "%"
- octet の文字列表現。2桁の大文字の16進数としてフォーマットし、必要に応じて左側にゼロを埋め込む
- 次の文字列を順番に連結したものを R にセットする
18.2.6.1.2 ランタイムセマンティクス(Runtime Semantics): Decode ( string, reservedSet )
エスケープ解除とデコードの処理は、2つのString引数string, reservedSetを使用する抽象操作Decodeによって記述されます。
- string のコードユニット数を strLen とする
- empty String を R とする
- 0 を k とする
- 繰り返し
- k イコール strLen なら、 R を返す
- string の インデックス k のコードユニットを C とする
- C が 0x0025 ("%" : PERCENT SIGN) でないなら、
- C を String値 S とする
- c. と異なるなら、
- k を start とする
- k + 2 が strLen 以上なら、URIError例外をスローする
- string のインデックス (k + 1) と (k + 2) のコードユニットが16進数文字でないなら、 URIError例外をスローする
- インデックス(k + 1)と(k + 2)を2桁の16進数とし、8ビット値に変換したものを B とする
- k + 2 を k にセットする
- B の最上位ビットが 0 なら、
- B を コードユニット C とする
- C が reservedSet にないなら、
- コードユニットC を String S とする
- 2. と異なるなら、
- string のインデックス start から k までの文字列を S とする
- vi. と異なるなら、
- Assert: B の最上位ビットは 1
- (B << n) & 0x80 が 0 になる負でない最小の整数を n とする
- n イコール 1 または n が 4 より大きいなら、URIError例外をスローする
- サイズが n の8ビット整数のリストを Octets とする
- BをOctets[0] にセットする
- k + (3 × (n - 1)) が strLen 以上なら、URIError例外をスローする
- 1 を j とする
- j < n の間繰り返し
- k + 1 を k にセットする
- string のインデックス k のコードユニットが、 0x0025 ("%" : PERCENT SIGN) でないなら、URIError例外をスローする
- string のインデックス (k + 1) と (k + 2) のコードユニットが16進数文字でないなら、 URIError例外をスローする
- インデックス(k + 1)と(k + 2)を2桁の16進数とし、8ビット値に変換したものを B とする
- B の最上位2ビットが10でないなら、URIError例外をスローする
- k + 2 を k にセットする
- B を Octets[j] にセットする
- j + 1 を j にセットする
- Octets にUnicodeコードポイントの有効なUTF-8エンコーディングが含まれていないなら、URIError例外をスローする
- UTF-8変換をOctetsに適用(オクテットのリストから21ビット値に変換)した結果を V とする
- コードユニットが UTF16Encoding(V) の要素である文字列値を S とする
- R と S の文字列連結を R にセットする
- k + 1 を k にセットする
コードユニット値 | 表記 | オクテット 1 | オクテット 2 | オクテット 3 | オクテット 4 |
---|---|---|---|---|---|
0x0000 - 0x007F | 00000000 0zzzzzzz | 0zzzzzzz | |||
0x0080 - 0x07FF | 00000yyy yyzzzzzz | 110yyyyy | 10zzzzzz | ||
0x0800 - 0xD7FF | xxxxyyyy yyzzzzzz | 1110xxxx | 10yyyyyy | 10zzzzzz | |
0xD800 - 0xDBFF 次の値が続く 0xDC00 - 0xDFFF |
110110vv vvwwwwxx 次の値が続く 110111yy yyzzzzzz |
11110uuu | 10uuwwww | 10xxyyyy | 10zzzzzz |
0xD800 - 0xDBFF 次の値が続かない 0xDC00 - 0xDFFF |
URIError | ||||
0xDC00 - 0xDFFF | URIError | ||||
0xE000 - 0xFFFF | xxxxyyyy yyzzzzzz | 1110xxxx> | 10yyyyyy | 10zzzzzz |
ここで、
uuuuu = vvvv + 1
は、Unicode標準(サロゲート)のセクション3.8のように0x10000の追加を意味します。
上記の変換は、各サロゲートペア(0xD800から0xDFFFまでのコードユニット値)をUTF-32表現で結合し、結果の21ビット値をUTF-8にエンコードします。 デコードすると、サロゲートペアが再構築されます。
RFC 3629は、無効なUTF-8オクテットシーケンスのデコードを禁止しています。 たとえば、無効なシーケンスC080はコードユニット0x0000にデコードしてはなりません。 このような無効なシーケンスに遭遇したときにURIErrorをスローするには、デコードアルゴリズムの実装が必要です。
18.2.6.2 decodeURI ( encodedURI )
decodeURI関数は、新しいバージョンのURIを計算します。このバージョンでは、encodeURI関数によって導入される可能性のある種類の各エスケープシーケンスとUTF-8エンコーディングが、それが表すコードポイントのUTF-16エンコーディングに置き換えられます。 encodeURIによって導入できなかったエスケープシーケンスは置き換えられません。
decodeURI関数は%decodeURI%組み込みオブジェクトです。 引数encodedURIを使用してdecodeURI関数を呼び出すと、次の手順が実行されます。
- ? ToString(encodedURI) を uriString とする
- uriReservedで有効な各コードユニットの1つのインスタンスと"#"を含む文字列を reservedURISet とする
- ? Decode(uriString, reservedURISet) を返す
18.2.6.3 decodeURIComponent ( encodedURIComponent )
decodeURIComponent関数は、URIの新しいバージョンを計算します。このバージョンでは、encodeURIComponent関数によって導入される可能性のある種類の各エスケープシーケンスとUTF-8エンコーディングが、それが表すコードポイントのUTF-16エンコーディングに置き換えられます。
decodeURIComponent関数は%decodeURIComponent%組み込みオブジェクトです。 decodeURIComponent関数が引数encodedURIComponentで呼び出されると、次の手順が実行されます。
18.2.6.4 encodeURI ( uri )
encodeURI関数は、UTF-16エンコード(6.1.4)URIの新しいバージョンを計算します。このURIでは、特定のコードポイントの各インスタンスが、コードポイントのUTF-8エンコードを表す1つ、2つ、3つ、または4つのエスケープシーケンスに置き換えられます。
encodeURI関数は%encodeURI%組み込みオブジェクトです。 encodeURI関数が引数uriで呼び出されると、次の手順が実行されます。
- ? ToString(uri) を uriString とする
- uriReserved と uriUnescaped と "#" で有効な各コードユニットの1つのインスタンスを含む文字列を unescapedURISet とする
- ? Encode(uriString, unescapedURISet) を返す
18.2.6.5 encodeURIComponent ( uriComponent )
encodeURIComponent関数は、UTF-16エンコード(6.1.4)URIの新しいバージョンを計算します。このURIでは、特定のコードポイントの各インスタンスが、コードポイントのUTF-8エンコードを表す1つ、2つ、3つ、または4つのエスケープシーケンスに置き換えられます。
encodeURIComponent関数は、%encodeURIComponent%組み込みオブジェクトです。 encodeURIComponent関数が引数uriComponentで呼び出されると、次の手順が実行されます。
- ? ToString(uriComponent) を componentString とする
- uriUnescapedで有効な各コードユニットの1つのインスタンスを含む文字列を unescapedURIComponentSet とする
- ? Encode(componentString, unescapedURIComponentSet) を返す
18.3 グローバルオブジェクトのコンストラクタープロパティ(Constructor Properties of the Global Object)
18.3.1 Array ( . . . )
22.1.1参照
18.3.2 ArrayBuffer ( . . . )
24.1.2参照
18.3.3 BigInt ( . . . )
20.2.1参照
18.3.4 BigInt64Array ( . . . )
22.2.4参照
18.3.5 BigUint64Array ( . . . )
22.2.4参照
18.3.6 Boolean ( . . . )
19.3.1参照
18.3.7 DataView ( . . . )
24.3.2参照
18.3.8 Date ( . . . )
20.4.2参照
18.3.9 Error ( . . . )
19.5.1参照
18.3.10 EvalError ( . . . )
19.5.5.1参照
18.3.11 Float32Array ( . . . )
22.2.4参照
18.3.12 Float64Array ( . . . )
22.2.4参照
18.3.13 Function ( . . . )
19.2.1参照
18.3.14 Int8Array ( . . . )
22.2.4参照
18.3.15 Int16Array ( . . . )
22.2.4参照
18.3.16 Int32Array ( . . . )
22.2.4参照
18.3.17 Map ( . . . )
23.1.1参照
18.3.18 Number ( . . . )
20.1.1参照
18.3.19 Object ( . . . )
19.1.1参照
18.3.20 Promise ( . . . )
25.6.3参照
18.3.21 Proxy ( . . . )
26.2.1参照
18.3.22 RangeError ( . . . )
19.5.5.2参照
18.3.23 ReferenceError ( . . . )
19.5.5.3参照
18.3.24 RegExp ( . . . )
21.2.3参照
18.3.25 Set ( . . . )
23.2.1参照
18.3.26 SharedArrayBuffer ( . . . )
24.2.2参照
18.3.27 String ( . . . )
21.1.1参照
18.3.28 Symbol ( . . . )
19.4.1参照
18.3.29 SyntaxError ( . . . )
19.5.5.4参照
18.3.30 TypeError ( . . . )
19.5.5.5参照
18.3.31 Uint8Array ( . . . )
22.2.4参照
18.3.32 Uint8ClampedArray ( . . . )
22.2.4参照
18.3.33 Uint16Array ( . . . )
22.2.4参照
18.3.34 Uint32Array ( . . . )
22.2.4参照
18.3.35 URIError ( . . . )
19.5.5.6参照
18.3.36 WeakMap ( . . . )
23.3.1参照
18.3.37 WeakSet ( . . . )
23.4参照
18.4 グローバルオブジェクトの他のプロパティ(Other Properties of the Global Object)
18.4.1 Atomics
24.4参照
18.4.2 JSON
24.5参照
18.4.3 Math
20.3参照
18.4.4 Reflect
26.1参照