第三章JavaScript基本概念(五)

3210 ワード

5.語句
5.1 if文
ほとんどのプログラミング言語で最もよく使われている語句はif文です.以下はif文の使い方です.
if(condition) statement1 else statement2;
_; の中のconditionは任意の表現であり、この表式に対する求値の結果は必ずしもブール値ではない.ECMAScriptはBoolean()関数を自動的に呼び出してこの式の値をブール値に変換します.conditionに対して値を求める結果がtrueであれば、statement 1を実行する.conditonに対して値を求める結果がfalseであれば、statment 2を実行する.また、この2つの語句は、1行のコードであっても良いし、1つのコードブロック(1つの括弧で囲まれた複数行のコード)であっても良い.次の例を見てください.
if (i>25){
    alert("Greater than 25");
}else{
    alert("Less than or equal to 25");
}
ただし、常にコードブロックを使用することを推奨します.実行するコードは一行だけです.
5.2 do-while文
  do-while文は後テストサイクル文で、つまり循環体のコードが実行された後だけ、輸出条件をテストします.以下は一例です.
var i = 0;
do {
    i+=2;
}while (i<10);
alert(i);
5.3 while文
  while文の場合、循環文をテストします.つまり、循環体内のコードを実行する前に、輸出条件に対して値を求めます.以下は一例です.
var i = 0;
while (i<10){
    i+=2;
}
alert(i);
5.4 for文
_; for文も前のテストサイクル文ですが、サイクルを実行する前に変数を初期化し、サイクルを定義した後に実行するコードの能力があります.以下は一例です.
var count = 10;
for (var i=0; i<10; i++ ){
    alert(i);
}
forループの変数初期化表現では、varキーワードを使用しなくても良いことを指摘する必要があります.この変数の初期化は、外部において実行されてもよい.
var count = 10;
var i;
for (i=0; i< count; i++){
    alert(i);
}
以上のコードは循環初期化文式で変数を宣言する効果と同じです.ECMAScriptにはブロックレベルのスコープが存在しないため、ループ内部で定義された変数は外部にもアクセスできます.たとえば:
var count = 10;
for (var i=0; i<10; i++ ){
    alert(i);
}
alert(i);  //10
また、for文では、表式を初期化し、制御式と循環式のいずれかを選択します.これらの3つの表現を省略すると、無限ループが作成されます.たとえば:
for (;;){
    alert("endless...");
}
制御式だけを与えると、実際にはforサイクルをwhileサイクルに変換します.たとえば:
var count = 10;
var i = 0;
for (; i < count; ){
    alert(i);
    i++;
}
for文は極めて柔軟性があるので、ECMAScriptの中で最もよく使われている言葉です.
5.5 for-i文
for-in文は正確な反復文で、オブジェクトの属性を列挙するために使用できます.以下は一例です.
for (var propName in window){
    document.write(propName);
}
ECMAScriptオブジェクトの属性には順序がありません.したがって、for-i文で循環的に出力される属性名の順序は予測できない.ただし、反復する対象変数の値がnullまたはundefinedであれば、for-i循環文はエラーを投げます.ECMAScript 5はこのような行為を修正しました.このような状況に対しては、もはや間違いを投げません.循環体を実行しないだけです.ただし、最大限の互換性を保証するために、for-i-nサイクルを使用する前に、この値がnullまたはundefinedであるかどうかを検出することを推奨します.
5.6 switch文
  switch文とif文の関係は最も密接で、ECMAScriptの中のswitch文はC言語に非常に近いです.以下は一例です.
switch(i) {
    case 25:
        alert("25");
        break;
     case 35:
        alert("35");
        break;
     default:
         alert("other");
}
switch文では任意のデータタイプが使用できます.各caseの値は定数ではなく、変数でもいいし、表現でもいいです.次の例を見てください.
switch("hello world") {
    case "hello" + "world":
        alert("Greeting was found");
        break;
    case "goodbye":
        alert("Closing was found");
        break;
    default:
        alert("Unexpected message was found");
}
別の例:
var num = 25;
switch(true) {
    case num < 0:
        alert("Less than 0");
        break;
    case num >= 0 && num <= 10:
        alert("Between 0 and 10");
        break;
    default:
        alert("More than 10");
}
switch文は比較値ではフルオペレータを使用していますので、タイプ変換は発生しません(文字列「10」は数値10に等しくない).