本頁の目次 目次 次頁: 7_Lexical_Conventions 前頁: 5_Notational_Conventions
ECMAScript ソーステキストは Unicode 文字符号化バージョン 2.1 以降の文字のシーケンスとして表わされ、 UTF-16 変形フォーマットを使用する。 Unicode 技術報告書 #15 に記述されるような Unicode 正規化形式 C (正統構成) へのテキストの正規化が期待される。適合 ECMAScript 実装には、テキストの正規化の実行も、実行しているかのような振る舞いも要求されない。
ECMAScriptソーステキストは、任意の Unicode 文字で構成できる。 Unicode 空白文字はすべて空白として扱われ、また Unicode 行/段落分離子はすべて行分離子として扱われる。非 Latin の Unicode 文字は、識別子、文字列リテラル、正規表現リテラルおよびコメントの中で許可される。
この文書の残り全体を通して、語句 "コードポイント" および単語 "文字" が使用され、 UTF-16 テキストの単一の 16 ビット単位をあらわすのに使われる符号なし 16 ビット値を参照する。語句 "Unicode 文字" は、単一の Unicode スカラー値 (それは16ビットより長くてもよく、このように 1 つ以上のコードポイントによって表わされてもよい) にあらわされる、抽象語的な、また印字可能な単位を参照する。これは、単一の Unicode スカラー値によって表わされる実体を参照するだけである: たとえユーザが全体のシーケンスを単一の文字と見なしてもよくても、結合する文字シーケンスの成分は依然として個々の "Unicode 文字" である。
文字列リテラル、正規表現リテラルおよび識別子では、任意の文字 (コードポイント) を 6 文字 (すなわち 4 桁の16進数と \u
) から成る Unicode エスケープシーケンスとして表現してもよい。コメント内では、そのようなエスケープシーケンスは、コメントの一部として有効に無視される。文字列リテラルか正規表現リテラル内では、 Unicodeエスケープシーケンスがリテラルの値に 1 文字を寄付する。識別子内では、エスケープシーケンスが識別子に1文字を寄付する。
NOTE このドキュメントは "文字列" 内の "文字" と、その文字の UTF-16 符号化である符号なし16ビット整数の間の "変形" を時々参照するが、現実には符号なし16ビット値を用いて "文字列" 内の "文字" が表わされるので、実際には変形はない。
NOTE ECMAScriptは、 Unicode エスケープシーケンスの振る舞いにおいて Java プログラミング言語と異なる。 Java プログラム中で、 Unicode エスケープシーケンス \u000A
が、例えば、一行のコメント内に出現する場合、それは行終端子 (Unicode 文字 000A
はラインフィード) として解釈され、したがって、次の文字はコメントの一部にはならない。同様に、 Unicode エスケープシーケンス \u000A
が、 Java プログラム中の文字列リテラル内に出現する場合、それは同様に文字列リテラルの内に許可されない行終端子として解釈される -- one は \u000A
の代わりに \n
と書いてラインフィードを文字列リテラルの文字列値の一部にしなければならない。ECMAScript プログラムでは、コメント内に生じる Unicode エスケープシーケンスが解釈されず、したがってコメントの終了に寄与することができない。同様に、 ECMAScript プログラム中の文字列リテラル内に生じる Unicode エスケープシーケンスは、常にリテラルの文字列値に文字を寄付し、行終端子、あるいは文字列のリテラルを終了する引用符としては解釈されない。