本頁の目次 目次

B 互換性 (Compatibility)

B.1 追加構文 (Additional Syntax)

過去の版の ECMAScript は、 8 進数リテラルと 8 進数エスケープシーケンスを規定する追加の構文と意味論を含んでいた。それらはこの版の ECMAScript からは取り除かれている。この非公式の補遺は、古い ECMAScript プログラムとの互換性のための 8 進数リテラルと 8 進数エスケープシーケンスの統一構文及び意味論を提示する。

B.1.1 数値リテラル (Numeric Literals)

セクション 7.8.3 の構文及び意味論を次のように拡張できる:

Syntax
NumericLiteral ::
DecimalLiteral
HexIntegerLiteral
OctalIntegerLiteral
OctalIntegerLiteral ::
0 OctalDigit
OctalIntegerLiteral OctalDigit
Semantics
  • NumericLiteral :: OctalIntegerLiteral の数学値は OctalIntegerLiteral の数学値である。
  • OctalDigit :: 0 の数学値は 0 である。
  • OctalDigit :: 1 の数学値は 1 である。
  • OctalDigit :: 2 の数学値は 2 である。
  • OctalDigit :: 3 の数学値は 3 である。
  • OctalDigit :: 4 の数学値は 4 である。
  • OctalDigit :: 5 の数学値は 5 である。
  • OctalDigit :: 6 の数学値は 6 である。
  • OctalDigit :: 7 の数学値は 7 である。
  • OctalIntegerLiteral :: 0 OctalDigit の数学値は OctalDigit の数学値である。
  • OctalIntegerLiteral :: OctalIntegerLiteral OctalDigit の数学値は (OctalIntegerLiteral × 8 の数学値) + OctalDigit の数学値である。

B.1.2 文字列リテラル

セクション 7.8.4 の構文及び意味論を次のように拡張できる:

Syntax
EscapeSequence ::
CharacterEscapeSequence
OctalEscapeSequence
HexEscapeSequence
UnicodeEscapeSequence
OctalEscapeSequence ::
OctalDigit [lookahead ∉ DecimalDigit]
ZeroToThree OctalDigit [lookahead ∉ DecimalDigit]
FourToSeven OctalDigit
ZeroToThree OctalDigit OctalDigit
ZeroToThree :: one of
0 1 2 3
FourToSeven :: one of
4 5 6 7
Semantics
  • EscapeSequence :: OctalEscapeSequence の文字値は、 OctalEscapeSequence の文字値である。
  • OctalEscapeSequence :: OctalDigit [lookahead ∉ DecimalDigit] の文字値は、コードポイント値が OctalDigit の数学値である文字である。
  • OctalEscapeSequence :: ZeroToThree OctalDigit [lookahead ∉ DecimalDigit] の文字値は、コードポイント値が (8 × ZeroToThree の数学値) + OctalDigit の数学値 である文字である。
  • OctalEscapeSequence :: FourToSeven OctalDigit の文字値は、コードポイント値が (8 × FourToSeven の数学値) + OctalDigit の数学値 である文字である。
  • OctalEscapeSequence :: ZeroToThree OctalDigit OctalDigit の文字値は、コードポイント値が (64 (すなわち 82) × ZeroToThree の数学値) + (8 × 1 個目の OctalDigit の数学値) + 2 個目の OctalDigit の数学値 である文字である。
  • ZeroToThree :: 0 の数学値は 0 である。
  • ZeroToThree :: 1 の数学値は 1 である。
  • ZeroToThree :: 2 の数学値は 2 である。
  • ZeroToThree :: 3 の数学値は 3 である。
  • FourToSeven :: 4 の数学値は 4 である。
  • FourToSeven :: 5 の数学値は 5 である。
  • FourToSeven :: 6 の数学値は 6 である。
  • FourToSeven :: 7 の数学値は 7 である。

B.2 追加プロパティ (Additional Properties)

ECMAScript 実装には標準ネイティブオブジェクトにいくつかの追加プロパティを持つものがある。この非公式の補遺は、そのようなプロパティのために本標準にプロパティまたその意味論作成はせずに、統一形式の意味論を示唆する。

B.2.1 escape (string)

escape 関数はグローバルオブジェクトのプロパティである。これは、ある文字を16進数のエスケープシーケンスに置換した新たな文字列を算出する。

置き換えられる文字のコードポイント値が 0xFF 以下である場合、 %xx 形式の 2 桁のエスケープシーケンスが用いられる。置き換えられる文字のコードポイント値が 0xFF を超える場合、 %uxxxx 形式の 4 桁のエスケープシーケンスが用いられる。

escape 関数が 1 個の引数 string で呼び出されるとき、次のステップが取られる:

  1. ToString(string) を呼び出す。
  2. Result(1) 内の文字数を算出する。
  3. R を空文字列とする。
  4. k を 0 とする。
  5. k が Result(2) と等しいならば R を返す。
  6. Result(1) 内部の位置 k の文字 (16ビット符号なし整数で表される) を取得する。
  7. Result(6) が 69 個の非空白文字
  8. "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789@*_+-./" のうちの一つならば、ステップ 13 へ。
  9. Result(6) が 256 未満ならば、ステップ 11 へ。
  10. S を 6 個の文字 "%uwxyz" で構成する文字列とする。 wxyz のところは Resulr(6) の値を符号化する 4 個の 16 進数字である。
  11. ステップ 14 へ。
  12. S を 3 個の文字 "%xy" で構成する文字列とする。 xy のところは Resulr(6) の値を符号化する 2 個の 16 進数字である。
  13. ステップ 14 へ。
  14. S を単一の文字 Result(6) を含む文字列とする。
  15. R を、 R の前の値と S を連結して算出した新しい文字列とする。
  16. k を 1 増分する。
  17. ステップ 5 へ。

NOTE 符号化は部分的に RFC1738 に記述される符号化に基づいているが、本標準で規定する完全な符号化は RFC1738 の内容を考慮せず上述される。

B.2.2 unescape (string)

unescape 関数はグローバルオブジェクトのプロパティである。これは escape 関数が生成しうる並びの各エスケープシーケンスがその表す文字で置き換えられた新しい文字列値を算出する。

unescape 関数が 1 個の引数 string で呼び出されるとき、次のステップが取られる:

  1. ToString(string) を呼び出す。
  2. Result(1) の文字数を算出する。
  3. R を空文字列とする。
  4. k を 0 とする。
  5. k と Result(2) が等しいならば、 R を返す。
  6. c を Result(1) 内部の位置 k の文字とする。
  7. c が % でないならば、ステップ 18 へ。
  8. k が Result(2)-6 より大きいならば、ステップ 14 へ。
  9. Result(1) 内部の位置 k+1 の文字が u でないならば、ステップ 14 へ。
  10. Result(1) 内部の位置 k+2, k+3, k+4, k+5 の 4 個の文字全てが 16 進数字でないならば、ステップ 14 へ。
  11. c を、コードポイント値が Result(1) 内部の位置 k+2, k+3, k+4, k+5 の 4 個の 16 進数字で表される整数である文字とする。
  12. k を 5 増分する。
  13. ステップ 18 へ。
  14. k が Result(2)-3 より大きいならば、ステップ 18 へ。
  15. Result(1) 内部の位置 k+1, k+2 の 2 個の文字両方が 16 進数字でないならば、ステップ 18 へ。
  16. c を、コードポイント値が 2 個の 0 と Result(1) 内部の位置 k+1, k+2 の 2 個の 16 進数字で表される整数である文字とする。
  17. k を 2 増分する。
  18. R を、 前の R の値と c を連結して算出した新しい文字列値とする。
  19. k を 1 増分する。
  20. ステップ 5 へ。

B.2.3 String.prototype.substr (start, length)

substr メソッドは 2 個の引数、 startlength をとり、このオブジェクトを文字列に変換し、文字位置 start で開始して length 個の文字 (length が undefined なら文字列の末尾) まで続く部分文字列を返す。 start が負ならば、文字列の長さを sourceLength として、それを (sourceLength+start) として扱う。結果は文字列値であり、 String オブジェクトにはならない。次のステップが取られる:

  1. ToString を呼出し、引数に this 値を与える。
  2. ToInteger(start) を呼出す。
  3. length が undefined ならば、 +∞ を用いる; そうでないならば、 ToInteger(length) を呼出す。
  4. Result(1) の文字数を算出する。
  5. Result(2) 正または 0 ならば、 Result(2) を用いる; そうでないならば max(Result(4)+Result(2),0) を用いる。
  6. min(max(Result(3),0), Result(4)-Result(5)) を算出する。
  7. Result(6) ≤ 0 ならば、空文字列 "" を返す。
  8. Result(1) の位置 Result(5) の文字で開始する Result(6) 個の連続する文字で構成される文字列を返す。

substr メソッドの length プロパティは 2 である。

NOTE substr 関数は故意に汎用的である; this 値が String オブジェクトであることを要求しない。それゆえ、他の種類のオブジェクトにメソッドとして転用されうる。

B.2.4 Date.prototype.getYear ( )

NOTE "2000 年問題" を回避するため、ほぼ全ての目的で getFullYear メソッドが好まれる。

getYear メソッドが引数無しで呼出される時、次のステップが取られる:

  1. t をこの時間値とする。
  2. t が NaN ならば、 NaN を返す。
  3. YearFromTime(LocalTime(t)) - 1900 を返す。

B.2.5 Date.prototype.setYear (year)

NOTE "2000 年問題" を回避するため、ほぼ全ての目的で setFullYear メソッドが好まれる。

setYear メソッドが 1 個の引数 year で呼出される時、次のステップが取られる:

  1. t を LocalTime(この時間値) の結果とする; しかし、この時間値が NaN ならば、 t を +0 とする。
  2. ToNumber(year) を呼出す。
  3. Result(2) が NaN ならば、this 値の [[Value]] プロパティを NaN に設定し、 NaN を返す。
  4. Result(2) が NaN でなく、かつ 0 ≤ ToInteger(Result(2)) ≤ 99 ならば、 Result(4) は ToInteger(Result(2)) + 1900 である。そうでないならば、 Result(4) は Result(2) である。
  5. MakeDay(Result(4), MonthFromTime(t), DateFromTime(t)) を算出する。
  6. UTC(MakeDate(Result(5), TimeWithinDay(t))) を算出する。
  7. this 値の [[Value]] プロパティを TimeClip(Result(6)) に設定する。
  8. this 値の [[Value]] プロパティの値を返す。

B.2.6 Date.prototype.toGMTString ( )

NOTE プロパティ toUTCString が望ましい。 toGMTString プロパティは主に古いコードとの互換性のために提供される。新たな ECMAScript コード内では toUTCString プロパティが用いられることを推奨する。

Date.prototype.toGMTString の初期値である Function オブジェクトは、 Date.prototype.toUTCString の初期値である Function オブジェクトと同じである。

Page Contents

Issued: / Revised: / All rights reserved. © 2002-2016 TAKI