TIL#9 JS) Loops


複文


For Loops


for([初期文];[条件文];[増減文]){
... 重複テキスト...
}

しょき文章

  • 初期文を作成するときは、変数宣言子を入力する必要があります.(let i = 0)
  • 変数名はiとして宣言され、通常はindexを表す.(let i = 0)
  • indexが増加すると、数字は通常0から始まります.(配列のインデックスは[0]から始まるため)
  • 条件文

  • indexの範囲を設定します.
  • indexが増加した場合は、ある数値より小さいまたは小さい値に設定します.
  • index減少時は0以上に設定します.
  • 条件文がtrueの場合は、繰り返し文の実行を続行します.
  • 条件文がfalseの場合、繰り返し文は終了します.
  • 💡 配列のfor条件文は配列です.長さをたくさん使う.
    let arr = [5, 2, 4, 6];
    let arr2 = [];
    
    for (let i=0; i < arr.length ; i++) { // 배열 arr의 길이 = 원소 개수만큼 반복
        arr2[i] = arr[i];  // 새로운 배열 arr2에 arr의 원소들을 그대로 붙여넣기
    }
    
    console.log(arr2); // [5, 2, 4, 6]

    増減式

  • indexが1増加するごとに++となる.(インデックス内の数字が1つずつ増加)
  • indexマイナス1の場合--.(インデックス内の数字を1つずつ減らす)
  • i++はi=i+1の略である.i+=1と表すこともできます.
  • i++は++1と表すことができる.
    💡 条件文が成立し,forが1回実行された後,増減式でiを増減する.
  • ピボット矢印関数(Arrow Function)


    矢印関数は関数を簡略化します.矢印関数と通常関数にはメリットがありませんが、状況に応じて必要な構文を選択することがJavaScript関数を使用する最善の方法です.
  • 矢印関数は常に匿名関数であり、関数名はありません.→変数に割り当て可能
  • 通常の関数とは異なり、functionキーワードやreturnコマンドはありません
  • thisまたはsuperはバインドされておらず、メソッドとして使用できません.
    *矢印関数がthisを使用している場合は、グローバル変数を指します.
  • new.targetキーワードなし
  • scopeを指定するために通常使用されるcallapplyおよびbindメソッドは使用できません.
  • 생성자(Constructor)は使用できません.
  • yield|矢印関数では使用できません.
  • // 매개변수가 없는 일반함수
    function fn1() {
    	return 'Hello world';
    }
    
    // 매개변수가 없는 화살표함수
    const fn1 = () => 'Hello world';
    // 매개변수 1개가 있는 일반함수
    function fn2(name) {
    	return 'Hello ${name}';
    }
    
    // 매개변수 1개가 있는 화살표함수
    const fn2 = name => 'Hello ${name}';
    // 매개변수 2개가 있는 일반함수
    function fn2(name1, name2) {
    	return 'Hello ${name1}, ${name2}';
    }
    
    // 매개변수 2개가 있는 화살표함수
    const fn2 = (name1, name2) => 'Hello ${name1}, ${name2}';

    While Loops


    while([条件文]){
    ...重複テキスト...
    }

  • いくつかの条件文が成立すると、文を実行し続けます.
    条件文が偽物であれば、複文の文は実行を停止し、次の文に直接ジャンプします.

  • 条件文は、繰り返し文の文が実行される前に確認されます.
    条件文が本当に返されると、文は実行され、条件文は再認識されます.条件文が偽である場合、実行を停止し、while文の後ろの文に移動します.

  • 多くの文を実行するには、{}を使用して囲みます.
  • n = 0;
    x = 0;
    while (n < 3) {
      n++;
      x += n;
    }

    Do...While


    特定の条件を虚偽と判定されるまで繰り返す.
    do
    文章
    while([条件文]);
  • 条件文をチェックする前に、文は一度実行されます.
  • 多くの文を実行するには、{}を使用してこれらの文を組み合わせます.
    条件が本当なら、その文章は再実行されます.実行の最後に条件文がチェックされます.
    条件文が偽物の場合は、実行を停止しdo...ドアの真下にある文に移動しましょう.
  • do {
      i += 1;
      console.log(i);
    } while (i < 5);

    💡 For Loops VS While Loops

    // For Loops
    for(var count = 0; count < 6; count++) {
    console.log(count);
    }
    
    // While Loops
    var count = 1;
    
    while(count < 6) {
    console.log("count is: " + count);
    count++
    }

    break/continue


    break文は、重複文、switch文、ラベル文を組み合わせた文から終了するために使用されます.
  • break; : 一番奥のwhile、do-while、forまたはswitch文から離れます.
  • break[ラベル];特定のタブドアを終了します.
  • for (i = 0; i < a.length; i++) {
      if (a[i] == theValue) {
        break;
      }
    }
    continue文は、while、do-while、for、およびラベル文の再起動に使用できます.break文とは異なり、continue文はループ全体の実行を終了しません.ループではcontinueが再び条件に移動します.forループではcontinueがインクリメンタル表現に移動します.
  • continue; : 一番奥のwhileの場合、do-whileは、現在のドア周りのループを終了し、次のループを実行し続けます.
  • continue[ラベル];continueは、ラベルで識別されるループ文に適用されます.
  • i = 0;
    n = 0;
    while (i < 5) {
      i++;
      if (i == 3) {
        continue;
      }
      n += i;
    }

    Label


    ラベルは、プログラム内で他の場所を参照するために識別子として文を提供します.たとえば、「割り込み」または「継続」文を使用してループを識別し、「割り込み」または「継続」文を使用して、プログラムがループを干渉または継続するかどうかを示すことができます.
    EX)タグループはwhileループを識別する.
    markLoop:
    while (theMark == true) {
       doSomething();
    }

    for...in/of


    for...in文は、オブジェクトの列挙属性によって指定された変数を繰り返します.JavaScriptは、固有の属性ごとに指定された文を実行します.
    for (variable in object) {
    statements
    }
    for...of文はカスタムリピートフックを呼び出し、コマンドによって各一意属性の値を実行し、配列、Map、Set、引数などを含むリピート可能なオブジェクトによってリピートループを作成します.
    for (variable of object) {
    statement
    }

    ✔️ for practice


    Q.helloBotという関数を作成します.
  • for文を使用して、空のresult配列に挨拶文の挨拶文を入力します.
  • パラメータは0と1の配列を含む.
  • let group1 = [0,1,1,0,0]
    helloBot(group1); // --> ['안녕하세요','또 만나네요','또 만나네요','안녕하세요','안녕하세요']

    🔥 My Answer

    const helloBot = people => {
      let result = [];
    
      for(let i = 0; i < group1.length; i++) {
        if(group[i] === 0) {
          result.push('안녕하세요');
        }
        else if(group[i] === 1) {
          result.push('또 만나네요');
        }
      }
    
      return result;
    }
    
    let group1 = [0, 1, 1, 0, 0];
    let welcome = helloBot(group1);
    
    console.log(helloBot());
    ▶ Feedback
  • consoleで表示された結果値は良好であったが、配列内の入力値がpeopleと呼ばれていないことからエラーが発生した.log(helloBot()); カッコにはパラメータは含まれません.
  • SOL)反復文では,グループ1,consoleの代わりに人を用いる.log(welcome); 新しい変数welcomeが可読性を向上させると発表した.

    🔥 Model Answer

    // 초면인 사람은 0, 한 번 이상 본 사람은 1인 group1 배열로 인사봇 만들기
    // 화살표함수로 전자는 "안녕하세요", 후자는 "또 만나네요"를 출력하는 배열 반환하기
    
    // 화살표함수
    const helloBot = people => {   // 배열 group1을 인풋값 명 people로 받음
      let result = [];
    
      for(let i = 0; i < people.length; i++) {   // 배열 people의 길이만큼 for문 반복
        if(people[i] === 0) {    // 원소값이 0이라면
          result.push('안녕하세요');  // 새로운 배열에 "안녕하세요" 문자열값 추가
        }
        else if(people[i] === 1) {   // 원소값이 1이라면
          result.push('또 만나네요');   // 새로운 배열에 "또 만나네요" 문자열값 추가
        }
      }
    
      return result;  // 새로운 배열 반환
    }
    
    let group1 = [0, 1, 1, 0, 0];
    let welcome = helloBot(group1);
    
    console.log(welcome);    // ['안녕하세요','또 만나네요','또 만나네요','안녕하세요','안녕하세요']