Core JavaScript 1.5 Guide:Literals
出典: MDC
目次 |
[編集] リテラル
JavaScript では値を表すのにリテラルを使います。これは固定された値で、変数ではありません。あなたがスクリプト中に直接記述する値のことです。このセクションでは以下の種類のリテラルについて説明します。
[編集] 配列リテラル
配列リテラルとは、ゼロ個以上の式のリストであり、おのおのの式が配列の要素を表しており、角括弧 ([]) でくくられているもののことです。配列リテラルを使って配列を作ると、その配列は指定された値で要素を初期化され、配列の長さは指定された引数の個数にセットされます。
以下の例では、3 つの要素を持ち、長さが 3 の coffees という配列を作ります。
var coffees = ["French Roast", "Colombian", "Kona"];
注意 配列リテラルはオブジェクト初期化子の一種です。オブジェクト初期化子の使用 を参照してください。
トップレベルのスクリプト内でリテラルを用いて配列を作った場合、JavaScript は配列リテラルを含む式を評価するたびに配列を解釈します。さらに関数内で使用されたリテラルは関数が呼び出されるたびに生成されます。
配列リテラルも Array オブジェクトです。Array オブジェクトの詳細は Array オブジェクト をご覧ください。
配列リテラルでの余計なコンマ
配列リテラルではすべての要素を指定する必要はありません。立て続けに 2 つのコンマを置くと、未指定の要素のための空間を持った配列が生成されます。次の例では fish という配列を作ります。
var fish = ["Lion", , "Angel"];
この配列は値を持つ 2 つの要素と 1 つの空の要素を持っています(fish[0] は "Lion"、fish[1] は undefined、fish[2] は "Angel")。
要素のリストの最後にコンマを付けた場合、そのコンマは無視されます。次の例では配列の長さは 3 です。myList[3] は存在しません。リストの他のすべてのコンマは新しい要素を示します。
var myList = ['home', , 'school', ];
次の例では配列の長さは 4 です。myList[0] と myList[2] が抜けています。
var myList = [ , 'home', , 'school'];
次の例では配列の長さは 4 です。myList[1] と myList[3] が抜けています。最後のコンマのみが無視されます。
var myList = ['home', , 'school', , ];
[編集] 真偽値リテラル
真偽値型は true と false、2 つのリテラル値があります。
プリミティブな真偽値の true と false を Boolean オブジェクトの true や false という値と混同してはいけません。Boolean オブジェクトはプリミティブな真偽値型のラッパです。詳細は Boolean オブジェクト を参照してください。
[編集] 整数
整数は 10 進数、16 進数、8 進数で表現可能です。10 進整数リテラルは先頭の 0(ゼロ)を除いた、数字の連続からなります。整数リテラルにおいて先頭の 0(ゼロ)はそれが 8 進数であるということを指します。先頭の 0x(または 0X)は 16 進数を指します。16 進整数は数字(0 から 9)と a から f および A から F のアルファベットからなります。8 進整数は 0 から 7 までの数字のみからなります。
8 進整数リテラルは廃止予定であり、ECMA-262 第 3 版から除かれています。JavaScript 1.5 では依然として後方互換のためにそれをサポートしています。
整数リテラルの例は以下のようなものです。
0、117、-345(10 進数) 015、0001、-077(8 進数) 0x1123、0x00111、-0xF1A7(16 進数)
[編集] 浮動小数点リテラル
浮動小数点リテラルは以下の部分からなります。
- 整数部(先頭に "+" や "-" の符号を付けてもよい)
- 小数点 (".")
- 小数部
- 指数部
指数部は "e" または "E" の後に整数が続く形です。整数の先頭には符号("+" や "-")を付けることができます。浮動小数点リテラルは少なくとも 1 つの数字と、小数点もしくは "e"(または "E")からなる必要があります。
3.1415、-3.1E12、.1e12、2E-12 というのが浮動小数点リテラルの例です。
より簡潔に書けば、 次の形式です。
[digits][.digits][(E|e)[(+|-)]digits]
例:
3.14 2345.789 .3333333333333333333
[編集] オブジェクトリテラル
オブジェクトリテラルとは、ゼロ個以上のプロパティ名とそれに結びつけられた値のペアのリストであり、波括弧 ({}) でくくられているものです。オブジェクトリテラルを文の最初に使わないようにしてください。{ がブロックの始まりと解釈され、エラーを引き起こしたり、予期せぬ動作をしたりすることになります。
以下にオブジェクトリテラルの例を示します。car オブジェクトの最初の要素は myCar プロパティを定義します。2 番目の要素の getCar プロパティは関数を呼び出します (CarTypes("Honda"))。3 番目の要素の special プロパティは既存の変数を使用します (Sales)。
var Sales = "Toyota";
function CarTypes(name) {
if (name == "Honda")
return name;
else
return "Sorry, we don't sell " + name + ".";
}
var car = { myCar: "Saturn", getCar: CarTypes("Honda"), special: Sales };
document.write(car.myCar); // Saturn
document.write(car.getCar); // Honda
document.write(car.special); // Toyota
さらに、数値リテラルや文字列リテラルをプロパティ名に使用したり、オブジェクトをネストさせたりできます。以下の例ではこれらのオプションを使用しています。
var car = { manyCars: {a: "Saab", b: "Jeep"}, 7: "Mazda" };
document.write(car.manyCars.b); // Jeep
document.write(car[7]); // Mazda
以下のことに注意してください。
var foo = {a: "alpha", 2: "two"};
document.write(foo.a); // alpha
document.write(foo[2]); // two
//document.write(foo.2); // Error: missing ) after argument list
//document.write(foo[a]); // Error: a is not defined
document.write(foo["a"]); // alpha
document.write(foo["2"]); // two
[編集] 文字列リテラル
文字列リテラルとは、ゼロ個以上の文字を二重引用符 (") または単一引用符 (') でくくったものです。文字列は同じ種類の引用符でくくってください。つまり、どちらも単一引用符にするか、またはどちらも二重引用符にするかということです。以下が文字列リテラルの例です。
- "blah"
- 'blah'
- "1234"
- "one line \n another line"
- "John's cat"
文字列リテラルの値でなら、String オブジェクトのどんなメソッドでも呼び出すことができます。JavaScript が自動的に文字列リテラルを一時的な String オブジェクトに変換し、メソッドを呼び出し、その一時的な String オブジェクトを破棄するのです。String.length プロパティを文字列リテラルで使うこともできます。
- "John's cat".length
特に String オブジェクトを使う必要がない場合は文字列リテラルを使うようにしてください。String オブジェクトの詳細は String オブジェクト をご覧ください。
[編集] 文字列での特殊文字の使用
普通の文字に加えて、文字列では特殊文字も使えます。次の例をご覧ください。
"one line \n another line"
ここで、JavaScript の文字列で使用できる特殊文字の表を示します。
| 文字 | 意味 |
|---|---|
| \b | 後退 |
| \f | 改ページ |
| \n | 改行 |
| \r | 復帰 |
| \t | タブ |
| \v | 垂直タブ |
| \' | アポストロフィまたは単一引用符 |
| \" | 二重引用符 |
| \\ | バックスラッシュ (\) |
| \XXX | 0 から 377 までの 3 桁の 8 進数 XXX で指定された Latin-1 エンコーディングの文字。例えば、\251 は著作権記号を示す。 |
| \xXX | 00 から FF までの 2 桁の 16 進数 XX で指定された Latin-1 エンコーディングの文字。例えば、\xA9 は著作権記号を示す。 |
| \uXXXX | 4 桁の 16 進数 XXXX で指定された Unicode 文字。例えば、\u00A9 は著作権記号を示す。Unicode エスケープシーケンス を参照。 |
表 2.1:JavaScript の特殊文字
[編集] 文字のエスケープ
表 2.1 に載っていない文字の直前にバックスラッシュを付けても無視されますが、この使用法は廃止予定であり、使用を避けるべきです。
バックスラッシュを直前に付けることで引用符を文字列に挿入できます。これを「引用符をエスケープする」と言います。
var quote = "He read \"The Cremation of Sam McGee\" by R.W. Service."; document.write(quote);
この結果は次のようになります。
He read "The Cremation of Sam McGee" by R.W. Service.
文字列にバックスラッシュそのものを挿入するときはバックスラッシュをエスケープする必要があります。例えば、ある文字列に c:\temp というファイルパスを代入するときは、以下のようにします。
var home = "c:\\temp";