08章制御文


この文章はウィキペディアの「モダンJavaScript Deep Dive」から抜粋した.

ブロックドア


0以上のドアを括弧で囲み、コードブロックまたはブロックと呼ぶ.
通常、文末に;を付けるが、積み木文は常に文末の終わりを表す自己終結性を有するため、積み木文の文末に;を付けない.

条件文


条件文は、与えられた条件式の評価結果に基づいて、コードブロックの実行を決定する.この場合、条件式はブール値で計算できる式でなければなりません.条件式の種類は以下の2種類があります.
  • if ... else文
  • スイッチドア
  • if ... else文の使い方は次のとおりです.
    if(조건식) {
    	//조건식이 true일 때 실행될 문들
    } else {
       	//조건식이 false일 때 실행될 문들
    }
    この場合は1つの条件で用いられ、複数の条件があればelse ifで表すことができる.
    if(조건식1) {
    	//조건식1이 true일 때 실행될 문들
    } else if(조건식2) {
       	//조건식1은 false이지만 조건식2가 true일 때 실행될 문들
    } else {
    	//조건식1과 조건식2 모두 false일 때 실행될 문들
    }
    また,else ifの個数は自由に調節できる.
    スイッチドアの使い方は以下の通りです.
    switch(표현식) {
      case 값1:
        //표현식을 평가한 값이 값1과 같을 때 실행될 문들
        break;
      case 값2:
        //표현식을 평가한 값이 값2과 같을 때 실행될 문들
        break;
      case 값3:
        //표현식을 평가한 값이 값4과 같을 때 실행될 문들
        break;
      default:
        //표현식을 평가한 값이 해당 case중에 없을 때 실행될 문들
    }
    if ... else文は、論理的に真、偽で実行するコードブロックを決定するために使用され、switch文は、異なる状況に応じて実行するコードブロックを決定するために使用される.
    また、breakドアがなければ、default箱またはその後のbreak箱に遭遇する前に、次の箱の中のすべてのドアが実行されるので、各箱についてbreakを掛けなければならない.
    あるいは、多くの場合、同じ文を実行したい場合には、意図的にbreakを省略する場合もあり、pollueと呼ぶ.

    複文


    繰り返し文は条件式を評価し、値がtrueの場合にのみコードブロックを実行し、falseが表示されるまで条件式を実行後に再評価します.
  • for文
  • 、文
  • do ... 文
  • for文の使い方は以下の通りです.
    for(변수 선언문 또는 할당문; 조건식; 증감식) {
    	//조건식이 true인 경우 실행될 문들
    }
    
    for(var i = 0; i < 5; i++) {
      console.log(i);
    }
    //콘솔창에 0, 1, 2, 3, 4가 출력된다.
    while文の使い方は次のとおりです.
    while(조건식) {
    	//조건식이 true인 경우 실행될 문들
    }
    
    var i = 0;
    while(i < 3) {
      console.log(i);
      i++;
    }
    //콘솔창에 0, 1, 2가 출력된다.
    while文の場合、増減式、またはif文とbreak文を使用し、一定の条件を満たす場合、while文を脱出させる必要があります.
    do ... while文の使い方は次のとおりです.
    do {
    	//실행될 문들
    } while(조건식)
    
    var i = 0;
    do {
      console.log(i);
      i++;
    } while(i < 3);
    //콘솔창에 0, 1, 2가 출력된다.
    初めて,無条件にコードブロックを実行するのはwhile文との違いである.

    break文とcontinue文


    break文は、対応するコードブロックをポップアップします.正確には、ラベルゲート、繰返しゲート、スイッチゲートのコードブロックを取り出す.
    ここで、ラベルドアとは識別子が貼られたドアを指し、switchドアの各caseも実はラベルドアである.
    레이블명(또는 식별자명): for(var i = 0; i < 5; i++) {
    	//조건식이 true일 때 실행될 문들
    }
    //이 경우 for문에 레이블명을 붙힌 것이다.
    break文を使用する場合、単独で使用すると対応するコードブロックから逃れることができますが、ラベルとともに使用すると、対応するラベル署名を持つコードブロックから逃れることができます.
    例えば、二重for文では、breakが行われると、最初のfor文がラベルとして、break 레이블명が行われると、for文全体が終了する.
    continue文の場合、進行中のコードブロックの実行を停止し、直ちにインクリメンタル移動を行います.
    for(var i = 0; i < 10; i++) {
      if(i % 2) continue;
      console.log(i);
    }
    //콘솔창에 0, 2, 4, 6, 8가 출력된다.
    //이유: 홀수인 경우에는 continue가 실행되어 그 다음 문인
    //console.log(i)를 실행하지 않고 증감식으로 이동하기 때문