訳の正確性を保証するものではありませんので必要に応じて原文であるEcma InternationalのECMA-262にある ECMA-262.pdf ( ECMA-262 5.1 Edition )を参照下さい。
訳:2012年04月 webzoit.net
ECMAScriptのソーステキストは、バージョン 3.0 以降のUnicode文字のエンコード方式である文字列として表現されます。 そのテキストは、Unicodeテクニカルレポート #15に記述したように Unicode Normalization Form C (canonical composition) / Unicode正規化形式 C に正規化されていることが期待されます。 ECMAScriptの実装は、テキストの正規化を実行することやそれら自身のテキストの正規化を実行したことによる動作は要求されません。 ECMAScriptのソーステキストは、この仕様の目的において16ビットコードユニットのシーケンスであるものとみなされます。 このようにソーステキストは、有効な UTF-16 文字エンコード方式ではない16ビットコードユニットの並びを含む場合があります。 もし、実際のソーステキストが16ビットコードユニット以外の書式のエンコード方式である場合には、それは、まず最初にUTF-16への変換をしたかのように処理されなければいけません。
【構文】 SourceCharacter :: any Unicode code unit (何らかのUnicodeコードユニット)
この文書の残りを通じて「コードユニット」( "code unit" / コード単位)というフレーズと「文字」( "character" )という単語は、テキストの任意の1つの16ビット単位を表す為に使用した16ビット符号なしの値を参照する為に使用されるでしょう。 「Unicode文字」( "Unicode character" )というフレーズは、単一のUnicodeスカラー値によって表された抽象的な言語や表記単位への参照のために利用されるでしょう。 (これは16ビットより長くなる場合や1コードユニット以上で表される場合があるということです。) 「コードユニット」( "code unit" )というフレーズは、このようなUnicodeスカラー値を参照します。 「Unicode文字」( "Unicode character" )は、単独のUnicodeスカラー値によって表されるエンティティ(実体)だけを参照し、結合した文字並びの構成(コンポーネント)は、ユーザーが単独の文字としての並び全体であるものと考えるような場合でさえ、それはまだ、個々の「Unicode文字」( "Unicode character" )です。 文字列リテラル、正規表現リテラル、識別子においては、ある文字(コードユニット)が、6文字で構成されるUnicodeのエスケープシーケンス、すなわち \u に加えて16進数文字が4つ続くものとして表されます。 コメント内では、このようなエスケープシーケンスは、コメントの一部として効果的に無視されます。 文字リテラルや正規表現リテラル内では、Unicodeのエスケープシーケンスは、リテラルの値1文字に寄与して(リテラルの値1文字として使用されて)います。 識別子内では、エスケープシーケンスは、識別子1文字に寄与して(として使用されて)います。 [注釈:] この文書では時折、"string(文字列)"内の"character(文字)"間の"transformation(変換)"を参照し、その文字(character)のコードユニットである16ビット符号なし整数は、実際には、16ビット符号なしの値を使用して表現される"string"内の"character"なので、実際には変換するものはありません。 ECMAScriptは、Unicodeエスケープシーケンスの挙動についてプログラミング言語 Java を参考にしています。 Javaプログラムにおいては、もし、Unicodeエスケープシーケンス \u000A が、例えば、単一行コメント内に現れる場合には、それは、行終端(Unicode文字 000A は ラインフィード/改行/\n)として解釈されることになり、それゆえに次の文字はコメントの一部ではありません。 似たようなケースとして、もし、Unicodeエスケープシーケンス \u000A が、Javaプログラム内の文字リテラル内に現れる場合には、それは、同様に行終端として解釈され、文字リテラル内で受け入れられず、ラインフィードが文字列リテラルの文字列値の一部となってしまう要因にもなるので \u000A の代わりに \n にしなければいけません。 ECMAScriptプログラムでは、コメント内に現れるUnicodeエスケープシーケンスは、決して解釈されることはなく、それゆえにコメントの終端には寄与しません(として使用されません)。 似たようにECMAScriptプログラム内で文字リテラル内に現れるUnicodeエスケープシーケンスは常にリテラルのString値に寄与する(使われる)文字であり、それは、決して行終端や文字リテラルの終端と考えられるクォートマークとして解釈されることはありません。