본문 바로가기
공부기록/JavaScript

3월 9일 (1) JavaScript - 신규 표준 문법, 제어문 for문

by project100 2023. 3. 9.

2015년 신규 표준 자바스크립트 문법(ECMAScript 6)

 

1. const와 let - 변수 관련

변수 선언 var 식별자; - 변수

                 let 식별자; - 변수

let 사용이유 : 호이스팅(hoisting)을 막기 위해서

호이스팅 : 선언 전에 먼저 사용할 수 있도록 융통성을 두는 것

 

                const 식별자; - 상수

 

상수란? 변하지 않는 수, 초기화 이후 값을 변경할 수 없는 변수, 선언과 동시에 초기화!

용도) 상한 max/하한 min / 제어할 요소를 저장

 

2. 템플릿 리터럴 (Template Literals) - 데이터 관련

' , " 로 문자열 데이터를 처리 Template 레이아웃 틀, Literals 실존하는 값

 

나이를 입력받아서 문장과 결합하여 출력

let age = 10;

console.log("나이는 " + age + "세입니다.");

-> console.log(`나이는 ${age}세입니다.`);

`(백틱)으로 데이터를 묶어서 처리하는 방식. 백틱 영역 내에서 변수의 사용은 ${식별자}로 처리

 


제어문 

1. 분기 제어문 - if. switch

2. 반복 제어문 

 

for : 횟수에 따라 반복을 제어하는 문장

 

for(①초기식; ②조건식; ③증감식){

④반복할 실행문들; 하나 이상의 실행문들을 넣을 수 있다. { }로 묶여서 한꺼번에 같이 반복 

}

다른 실행문들;

 

실행순서 : 초기식 - {조건식(True) - 반복할 실행문들 - 증감식}  계속 반복 loop

                                 - 조건식(False) - 다른 실행문들;

 

무한 루프 : 조건식이 항상 참(True)인 상태 (의도하지 않은 무한루프는 문제임, 프로그램이 종료되지 않음, )

 

초기식 - 생략 가능; 조건식 - 비교문장; 증감식 - 카운트,  보통 증감연산자를 많이 사용

 

변수는 영역의 영향을 받는다. -> 지역변수 (local variable)

{  } 안에서 작성한 변수는 {  }  밖에서는 사용할 수 없다. (영향권을 벗어나기 때문에 없는 변수가 된다.)

 

카운터 변수 사용 관련

반복 횟수를 저장하기 위한 변수

1 ~ 10 == 0 ~ 9 == 2 ~ 11 == 5 ~ 14

 <script>
        // 1부터 5까지 모두 더한 결과를 출력하세요.
        let n;

        n = 1 + 2 + 3 + 4 + 5;
        document.write(`1부터 5까지 더한 합은 ${n}입니다.`);
        document.write("<br>")

        n = 10;
        n = n + 1; //n += 1;
        n = n + 2; //n += 2;
        n = n + 3; //n += 3;
        n = n + 4; //n += 4;
        n = n + 5; //n += 5;
        document.write(`1부터 5까지 더한 합은 ${n}입니다.`);
        document.write("<br>")
        // 공통적으로 나오는 부분을 찾는 것이 필요!
    
         n = 0;
         let v = 1; //초기식
         n += v; // n += 1;
         v++; //증감식
         n += v; // n += 2;
         v++;
         n += v; // n += 3;
         v++;
         n += v; // n += 4;
         v++;
         n += v; // n += 5;
         v++;
        document.write(`1부터 5까지 더한 합은 ${n}입니다.`);
        document.write("<br>")
         
        n = 0;
        for(let b = 1; b <= 100; b++) {  //초기식, 조건식, 실행문, 증감 순으로 진행
            n += b;
        }
        document.write(`1부터 100까지 더한 합은 ${n}입니다.`);
        document.write("<br>")

        n = 0;
        let b;
        for(let b = 1; b <= 100; b += 2) {  //let은 for문 안에서만 쓸 수 있는 변수이다. 
            n += b;
        }
        document.write(`1부터 100까지 홀수를 모두 더한 합은 ${n}입니다.`);
        document.write("<br>")

        document.write(`b : ${b}`);  //let은 for문 안에서만 쓸 수 있는 변수이다. 변수는 영역에 영향을 받는다. 
        //for문의 let을 지우고 출력하면 지역변수인 b가 출력되어 101, let을 포함하면 지역변수이기 때문에 undefined 찾을 수 없다고 뜬다.

        //똑같은 문장을 10번 반복해라
        document.write("<br>")
        for(let a = 0; a <= 9; a++){
            document.write("안녕하세요~<br>");
        }

        //구구단2단을 출력하세요.
        for(let d = 1; d < 10; d++){
            document.write(`2 * ${d} = ${2 * d}<br>`)
            }
            
</script>

제어문의 중첩

제어문 영역 내부에 다른 제어문을 작성하는 경우

 

for의 중첩 

      for(①초기식1; ②조건식1; ③증감식1){

          [④실행문장들1;]

         for(⑤초기식2; ⑥조건식2; ⑦증감식2){

               ⑧실행문장들2;

         }

         [⑨실행문장들3;]

}

⑩실행문장들4;

 

실행순서 : 초기식1 - 조건식1(True) - 실행문장들1 -

                 ⑤ 초기식2 - { ⑥ 조건식2(True) - ⑧ 실행문장들2 - ⑦ 증감식2 } 계속 반복 //반복되지 않으면 메모리에 사라짐

                 ⑥ 조건식2(False) - ⑨ 실행문장들3

                 ③ 증감식1 - 조건식1(True) - ④ 실행문장들1 - 

                 ⑤ 초기식2 - { ⑥ 조건식2(True) - ⑧ 실행문장들2 - ⑦ 증감식2 } 계속 반복 loop

                 ⑥ 조건식2(False) - ⑨ 실행문장들3 - -

                 ③ 증감식1 - ② 조건식1(False) -  실행문장들4 

 

1과 10은 한 번만 실행된다.

<!DOCTYPE html>
<html lang="ko">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>좌석 만들기</title>
    <style>
        #space {
            padding: 10px;
            width: 600px;
        }

        .item {
            width: 50px;
            height: 50px;
            background-color: antiquewhite;
            border: 1px solid darkcyan;
            text-align: center;
            line-height: 50px;
            margin: 5px;
            display: inline-block;
            box-sizing: border-box;
        }
    </style>
</head>

<body>
    <h2>좌석 배치도 만들기</h2>
    <p>총 줄 수 : <input type="number" id="rows"></p>
    <p>줄별 칸 수 : <input type="number" id="cols"></p>
    <button id="makbtn">생성</button>
    <div id="space">
    </div>
</body>
<script>
    const r = document.getElementById("rows");
    const c = document.getElementById("cols");
    const btn = document.getElementById("makbtn");
    const sp = document.getElementById("space");

    btn.addEventListener("click", function () {
        let rb = r.value;
        let cb = c.value;

        let boxs = "";

        for (let i = 0; i < rb; i++) {
            boxs += "<div>";
            for (let j = 0; j < cb; j++) {
                let s = "" + i + j;
                boxs += `<div class="item">${s}</div>`;
            }
            boxs += "</div>";
        }
        sp.innerHTML = boxs;
    })
</script>
</html>

반복문 {  } 중괄호가 어디에서 끝나는 제대로 확인하고 실행문 작성하기!

id와 class 이름 제대로 확인하고 어떤 값을 지정해야 하는지 작성, 값이름 혼동하지 말기!