コンピュータに対する命令を文という。副作用を伴わない式は、基本的には文ではない。たとえば下記。
1 * 2;
代入演算子を伴うものは、左辺の変数の値を変更する副作用を伴うので、文といえる。
var x = 1 * 2;
6.2 複合文
{}で囲んだものを文ブロックという。文ブロックの途中で処理が終了するのは、break文、continue文、return文、throw文があった時や、エラーが発生した時など。
6.3 if文
Javaと同じ。
6.4 else if文
Javaと同じ。
6.6 while文
Javaと同じ。
6.7 do/while文
Javaと同じ。
6.8 for文
Javaと同じ。
6.9 for/in文
オブジェクトのプロパティを調べる時に便利。ただし、組み込みオブジェクトのプロパティはすべて調べられない時がある。
for(var prop in obj){ alert('プロパティ名:' + prop + ' 値:' + obj[prop]); }
objオブジェクトにxというプロパティがあった場合、次のようにしてxプロパティにアクセスできる。
obj.x; obj['x']
6.10 ラベル文
Javaと同じ。
6.11 break文
ラベルを伴わないbreak文は、for, for/in, while, do/while, switch文でしか使えない。それに対して、ラベルを伴うbreak文は、それ以外の文ブロックで使用可能。たとえば、下記のようにラベルを伴うbreak文を書くことができる。
test: { alert(1); // 実行される。 break test; // testラベルの付いた文ブロックを抜ける。 alert(2); // 実行されない。 } alert(3); // 実行される。
6.12 continue文
break文と異なり、ラベルの使用有無に関係なく、continue文は、for, for/in, while, do/while, switch文でしか使えない。
6.13 var文
1つ以上の変数を宣言する時に使用する。
var x = 1, y = 2, z; // 変数x, yは初期化も行い、zは宣言のみ。
6.14 function文
f(3); // 「3」が表示される。 // つまり、この行が実行される前に関数fは既に定義されている。 // しかし、関数定義時に本体は実行されないし、コンパイルもされない。 // コンパイルされるのは実行時。 function f(x){ alert(x); }
6.15 return文
関数の戻り値を指定する。戻り値がない場合は未定義値になる。
function f(){ return; } var x = f(); alert(x); // undefined
6.16 throw文
エラーの通知。
通常、Errorオブジェクトか、そのサブクラスのオブジェクトをスローするが、実は何でもいい。
try{ throw new Date(); } catch(e){ alert(e); // 日付が表示される。 }
6.18 with文
スコープチェーンを一時的に変更する時に使用する。with(obj)と書いたとき、objがCallオブジェクトになるイメージ。
6.19 空文
;
6.20 JavaScript文のまとめ
まとめ。