Tutorial/JavaScript

자바스크립트 기초 마스터

by @webs 2024. 06. 01.
04.

자바스크립트 배우기 : 데이터 제어하기

소개

안녕하세요! 웹스토리보이입니다. 이 강의는 자바스크립트 초급부터 고급까지 아우르는 자바스크립트 핵심 개념을 다루는 기본서 강의입니다. 일반적인 자바스크립트 강의와는 목표와 방식이 다릅니다. 여기에서는 자바스크립트를 어떻게 단순하게 이해하고, 현실적으로 활용할 수 있는지를 고려하여 만들어진 내용입니다.

자바스크립트를 배우면서 때로는 이해하기 어려운 부분이나 무엇을 해야 하는지 혼란스러운 부분이 있을 수 있습니다. 그런 어려움을 극복하고 불필요한 시간 낭비를 줄이기 위해 이 강의는 차별화된 접근 방식을 채택하였습니다. 또한, 개인적으로도 어려움을 겪었던 부분들을 고려하여 설명하였습니다.

이 강의의 주요 목표는 자바스크립트를 학습하면서, 이론 뿐만 아니라 실제로 어떻게 활용할 수 있는지를 강조하는 것입니다. 이를 위해 강의는 크게 네 가지 주요 영역으로 구성되었습니다. 데이터 저장, 데이터 불러오기, 데이터 실행, 그리고 데이터 제어입니다. 이렇게 체계적으로 기초를 다지고 나서 실제 상황에 유용하게 활용할 수 있는 실용적인 예제를 다룰 것입니다. 이를 통해 프로그래밍 실력을 크게 향상시킬 수 있는 기회를 가지게 될 것입니다. 이 강의를 통해 자바스크립트의 세계에 더욱 가깝게 다가갈 수 있길 바랍니다.

인덱스

01. if문

if문은 조건에 따라 코드를 실행하는 제어문입니다.

{
        if (조건) {
            document.write("실행되었습니다.");
        }

        // 조건
        // true : true, "문자열", 1, 2, "1", "2", [], {}
        // false : fasle, 0, null, undefined ""(빈문자열)
}   

if 문은 JavaScript에서 조건문을 작성하는 데 사용됩니다. 조건문은 특정 조건이 참(true)인지 거짓(false)인지에 따라 코드 블록을 실행할지를 결정합니다. if 문을 사용하면 프로그램의 흐름을 제어할 수 있으며, 여러 가지 조건에 따라 다른 동작을 수행할 수 있습니다.

  • 조건에 true, "문자열", 1, 2, "1", "2", [], {}가 들어가면 true를 의미합니다.
  • 조건에 fasle, 0, null, undefined ""(빈문자열)이 들어가면 false를 의미합니다.
02. if-else문

if-else문은 조건(true, false)에 따라 코드를 실행하는 제어문입니다.

{
        let num = 100;

        if(num == 100){
                document.write("true");
        } else {
                document.write("false");
        }
}   

if 문을 사용하여 변수 num의 값이 10인지 확인하고, 그에 따라 다른 메시지를 출력합니다.

  • let num = 10; → 변수 num을 10으로 초기화합니다.
  • if (num == 10) → num이 10과 같은지 확인합니다.
  • document.write("true"); → 조건이 참이면 "true"를 출력합니다.
  • document.write("false"); → 조건이 거짓이면 "false"를 출력합니
03. 다중 if문

다중 if 문은 여러 개의 조건을 실행하는 제어문입니다.

{
        const num = 100;

        if(num == 90){
                document.write("실행되었습니다.(num = 90)");
        } else if(num == 95){
                document.write("실행되었습니다.(num = 95)");
        } else if(num == 100){
                document.write("실행되었습니다.(num = 100)");
        } else if(num == 105){
                document.write("실행되었습니다.(num = 105)");
        } else {
                document.write("실행되었습니다.");
        }

        // 실행되었습니다.(num = 100)
}   

다중 if 문은 여러 개의 조건을 순차적으로 검사하고, 해당하는 조건이 참일 때에만 해당 코드 블록을 실행하는 구조입니다. 이를 통해 여러 가지 경우에 따라 다른 동작을 수행할 수 있습니다. 다음은 조건문을 사용하여 num 변수의 값에 따라 다른 메시지를 출력하는 예제입니다.

  • num 변수 선언과 초기화 → num이라는 변수를 선언하고 초기값으로 100을 할당합니다.
  • 첫 번째 if 문 → num이 90과 같은지 확인합니다. 만약 num이 90과 같다면 "실행되었습니다.(num = 90)"을 출력하고 다음 조건은 검사하지 않고 종료됩니다.
  • 두 번째 else if 문 → num이 95와 같은지 확인합니다. num이 95와 같다면 "실행되었습니다.(num = 95)"을 출력하고 다음 조건은 검사하지 않고 종료됩니다.
  • 세 번째 else if 문 → num이 100과 같은지 확인합니다. num이 100과 같다면 "실행되었습니다.(num = 100)"을 출력하고 다음 조건은 검사하지 않고 종료됩니다. 이 경우에 해당하므로 이 부분이 실행됩니다.
  • 네 번째 else if 문 → num이 105와 같은지 확인합니다. num이 105와 같다면 "실행되었습니다.(num = 105)"을 출력하고 다음 조건은 검사하지 않고 종료됩니다.
  • else 문 → 위의 모든 조건이 만족되지 않을 때 실행되며, "실행되었습니다."를 출력합니다. 이 부분은 실행되지 않습니다.
04. 중첩 if문

중첩 if문은 하나의 if문 안에 다른 if문이 포함된 제어문입니다.

{
        const num = 100;

        if(num == 100){
                document.write("실행되었습니다.1");
                if(num == 100){
                        document.write("실행되었습니다.2");
                        if(num == 100){
                                document.write("실행되었습니다.3");
                        }
                }
        } else {
                document.write("실행되었습니다.4");
        }
    
        // 실행되었습니다.1
        // 실행되었습니다.2
        // 실행되었습니다.3
}   

중첩된 if 문을 사용하여 num 변수의 값을 여러 번 검사하고 다른 메시지를 출력하는 예제입니다.

  • num 변수 선언과 초기화: → num 변수를 선언하고 초기값으로 100을 할당합니다.
  • 첫 번째 if 문 → num 변수의 값을 100과 비교하고, 값이 동일하면 "실행되었습니다.1"을 출력합니다.
  • 두 번째 중첩된 if 문 → 두 번째 if 문은 첫 번째 if 문 내에 중첩되어 있습니다. 이 if 문은 또 다시 num 변수의 값을 100과 비교하고, 값이 동일하면 "실행되었습니다.2"를 출력합니다.
  • 세 번째 중첩된 if 문 → 세 번째 if 문은 두 번째 if 문 내에 중첩되어 있습니다. 이 if 문은 다시 한 번 num 변수의 값을 100과 비교하고, 값이 동일하면 "실행되었습니다.3"을 출력합니다.
  • else 블록: → 만약 첫 번째 if 문의 조건이 거짓이라면 (즉, num이 100이 아닌 경우), else 블록이 실행되고 "실행되었습니다.4"를 출력합니다.
05. if문 생략

if문은 생략하여 사용할 수 있습니다.

{
        const num = 100;

        // if(num == 100){
        //          document.write("true");
        // }
        
        // 01 약식으로 표현
        if(num == 100) document.write("true");

        // if(num == 100){
        //          document.write("true");
        // } else {
        //          document.write("false");
        // }

        // 02 약식으로 표현
        if(num == 100) document.write("true");
        else document.write("false");
}   

JavaScript에서 삼항 연산자와 조건부 연산자는 동일한 연산자를 가리키는 두 가지 다른 이름입니다.

  • 01 → 이 부분은 약식으로 표현된 것으로, '{}' 중괄호를 생략하고 한 줄로 간결하게 작성되었습니다.
  • 02 → 이 부분은 약식으로 표현된 if-else 문으로, '{}' 중괄호를 생략하고 두 줄로 간결하게 작성합니다.
06. 삼항 연산자

삼항 연산자는 조건식을 간결하게 표현할 수 있는 연산자입니다.

{
        // 조건식
        const num = 100;

        if(num == 100){
                document.write("true");
        } else {
                document.write("false");
        }
        
        // 삼항 연산자
        num == 100 ? document.write("true") : document.write("false");
}   

JavaScript에서 삼항 연산자와 조건부 연산자는 동일한 연산자를 가리키는 두 가지 다른 이름입니다. 공식적으로는 조건부 연산자(Conditional Operator)라고 부르지만, 삼항 연산자(Ternary Operator)라는 이름으로 자주 사용합니다. 삼항 연산자(Ternary Operator)는 JavaScript에서 조건에 따라 값을 선택하는 간단한 방법을 제공합니다. 삼항 연산자는 조건 ? 참일 때의 값 : 거짓일 때의 값 형태로 사용됩니다. if-else 문을 간결하게 표현할 수 있는 방법입니다.

  • 01 → 조건문을 이용한 코드: 조건문과 if/else 블록을 사용하여 조건에 따라 코드를 분기시킵니다. 코드 구조가 명확하고 이해하기 쉽습니다.
  • 02 → 삼항 연산자를 이용한 코드: 삼항 연산자를 사용하여 조건식, 참일 때 실행할 코드, 거짓일 때 실행할 코드를 한 줄에 작성합니다. 코드가 간결하고 표현력이 풍부하지만, 조건식이 길어지거나 복잡해지면 이해하기 어려울 수 있습니다.
조건문과 삼항연산자 어떤걸 사용할까?

조건문과 삼항연산자 모두 동일한 기능을 수행하지만, 각각 장단점이 있습니다. 상황에 따라 적절한 코드를 선택하는 것이 중요합니다.

  • 코드가 명확하고 이해하기 쉬운 것이 중요하다면 조건문을 이용하는 코드를 사용하는 것이 좋습니다.
  • 코드가 간결하고 표현력이 풍부한 것이 중요하다면 삼항 연산자를 이용하는 코드를 사용하는 것이 좋습니다.
  • 조건식이 길거나 복잡한 경우에는 삼항 연산자를 사용하기보다는 조건문을 사용하는 것이 좋습니다.
07. switch문

switch 문은 여러 조건을 간결하게 처리할 수 있는 제어문입니다.

{
        const num = 100;

        switch(num){
                case 90: 
                        document.write("실행되었습니다.(90)");
                        break;
                case 95:
                        document.write("실행되었습니다.(95)");
                        break;
                case 100:
                        document.write("실행되었습니다.(100)");
                        break;
                case 105:
                        document.write("실행되었습니다.(105)");
                        break;
                default:
                        document.write("실행되었습니다.");
        }

        // 실행되었습니다.(100)
}   

JavaScript의 switch 문은 하나의 표현식을 평가하고, 그 결과에 따라 여러 가능한 경우(case) 중 하나를 실행하는 제어 구조입니다. if-else 문과 유사하지만, switch 문은 특정 값에 따라 분기하는 경우 더 간결하고 읽기 쉽게 코드를 작성할 수 있습니다. 다음은 switch 문을 사용하여 num 변수의 값을 비교하고 해당하는 case에 따라 다른 메시지를 출력하는 예제입니다.

  • num 변수 선언과 초기화 → num 변수를 선언하고 초기값으로 100을 할당합니다.
  • switch 문 → switch 문은 num 변수의 값을 확인하고, 해당하는 case로 분기합니다.
  • 첫 번째 case 문 (90) → num이 90과 일치하지 않으므로 해당 코드 블록은 실행되지 않습니다.
  • 두 번째 case 문 (95) → num이 95와 일치하지 않으므로 해당 코드 블록은 실행되지 않습니다.
  • 세 번째 case 문 (100) → num이 100과 일치하므로 해당 코드 블록이 실행되고 "실행되었습니다.(100)"이 출력됩니다.
  • 네 번째 case 문 (105) → num이 105와 일치하지 않으므로 해당 코드 블록은 실행되지 않습니다.
  • default 문 → 어떤 case 문과도 일치하지 않을 때 실행되며, "실행되었습니다."가 출력됩니다.
if-else 문과 switch의 언제 사용하면 좋을까?

if 문과 switch 문은 모두 조건에 따라 코드의 흐름을 제어하는 데 사용됩니다. 그러나 둘 사이에는 몇 가지 차이점이 있으며, 특정 상황에서 각각의 장점이 있습니다.

if 문은 다음과 같은 경우에 사용됩니다.

  • 조건이 복잡하거나 여러 조건을 포함해야 할 때.
  • 조건이 범위나 논리 연산을 포함할 때.
  • 다중 분기와 중첩된 조건을 처리할 때.

switch 문은 다음과 같은 경우에 사용됩니다.

  • 조건이 명확한 값(예: 상수, 열거형)일 때.
  • 여러 값에 대해 동일한 작업을 수행해야 할 때.
  • 분기할 값이 많고, 코드의 가독성을 높이고 싶을 때.
비교 항목 if 문 switch 문
사용 목적 범위 조건이나 복잡한 조건을 평가할 때 사용 값이 명확히 구분되는 경우 사용
조건 평가 방식 조건식이 참인지 거짓인지 평가 표현식의 값이 특정 값과 일치하는지 평가
범위 조건 숫자 범위나 복잡한 논리를 처리하기에 적합 명확하게 구분되는 값들에 대해 분기할 때 적합

결론은 적절한 경우 및 상황에 맞게 if 문과 switch 문을 선택하여 사용하면 코드의 가독성과 유지보수성을 높일 수 있습니다.

08. while문

while 문은 주어진 조건이 참인 동안 반복적으로 실행하는 반복문입니다.

{
        let num = 1;

        while(num<=10){
                document.write(num);
                num++;
        }

        // 1 2 3 4 5 6 7 8 9 10
}   

while 문은 JavaScript에서 반복문을 구현하는 한 가지 방법입니다. 조건이 참(true)인 동안 특정 코드 블록을 반복해서 실행합니다. while 문은 반복 횟수가 미리 정해져 있지 않고, 조건에 따라 반복을 제어해야 할 때 유용합니다. 다음은 while 문을 사용하여 변수 num이 1에서 10까지의 숫자를 출력하는 예제입니다.

  • let num = 1; → 코드는 변수 num을 선언하고 초기값으로 1을 할당합니다. 이 변수는 반복문에서 사용됩니다.
  • while (num <= 10) { → while 문을 시작합니다. 조건으로 num이 10 이하인 동안 (num <= 10) 반복문을 실행하라고 지정합니다. 즉, 조건이 참인 동안 반복됩니다.
  • document.write(num); → 현재 num 변수의 값을 웹 페이지에 출력합니다. 초기값은 1이므로 처음에는 "1"이 출력됩니다.
  • num++; → num 변수를 1씩 증가시킵니다. 이것은 반복문이 한 번 실행될 때마다 num의 값을 1씩 증가시킵니다.
  • 다음으로 조건을 검사합니다. num이 10보다 작거나 같으면 반복문이 계속 실행됩니다.
  • document.write(num); → num의 현재 값이 출력되고, 다시 num++으로 num이 증가됩니다.
  • 이 프로세스가 반복되고, num이 10 이하인 동안에는 계속해서 숫자가 출력됩니다.
  • num이 11이 되면 조건이 거짓이 되고 while 반복문이 종료됩니다.
09. do while문

do while 문은 주어진 조건이 참인 동안 반복적으로 실행하는 반복문입니다.

{
        let num = 1;
        do {
                document.write(num);
                num++;
        } while(num<=10);

        // 1 2 3 4 5 6 7 8 9 10
}   

do...while 반복문을 사용하여 변수 num이 1부터 10까지의 숫자를 웹 페이지에 출력하는 예제입니다.

  • let num = 1; → 코드는 변수 num을 선언하고 초기값으로 1을 할당합니다. 이 변수는 반복문에서 사용됩니다.
  • do { → do...while 반복문을 시작합니다. 이 부분은 무조건 한 번 실행됩니다.
  • document.write(num); → num 변수의 값을 웹 페이지에 출력합니다. 초기값은 1이므로 먼저 "1"이 출력됩니다.
  • num++; → num 변수를 1씩 증가시킵니다. 이것은 반복문이 한 번 실행될 때마다 num의 값을 1씩 증가시킵니다.
  • while (num <= 10); → 조건 검사 부분입니다. while 키워드 뒤에 따라오는 조건은 코드 블록 실행 이후에 검사됩니다. num이 10 이하인 동안 반복문을 계속 실행하라고 지정합니다.
  • 이제 반복문이 처음부터 다시 실행됩니다. num이 2가 되고 "2"가 출력됩니다. 그런 다음 num이 3, 4, 5, ..., 10까지 증가하면서 각 숫자가 출력됩니다.
  • num이 11이 되면 조건이 false가 되고 반복문이 종료됩니다.
while문과 do while의 차이점은?

while문과 do-while문의 차이점은 조건 검사의 위치에 있습니다. 이로 인해 두 반복문이 동작하는 방식에 차이가 생기게 됩니다.

조건 검사 위치 :

  • while문 → 조건 검사를 반복문의 시작 부분에서 수행합니다.
  • do-while문 → 조건 검사를 반복문의 끝 부분에서 수행합니다.

반복 횟수 :

  • while문 → 조건이 참일 경우에만 반복문이 실행됩니다. 따라서 반복문이 최소 한 번도 실행되지 않을 수 있습니다.
  • do-while문 → 반복문이 최소 한 번은 실행됩니다. 조건 검사를 나중에 하기 때문에, 처음 한 번은 무조건 실행됩니다.
10. for문

for 문은 반복 작업을 수행하는 데 사용되는 제어문입니다.

{
        for( let i=1; i<=10; i++ ){
                document.write(i);
        }

        // 1 2 3 4 5 6 7 8 9 10
}   

for문은 컴퓨터 프로그래밍에서 반복 작업을 수행하는 데 가장 많이 사용되는 반복문 중 하나입니다. 특정 범위의 값을 순환하면서 해당 값마다 반복적으로 코드를 실행하는 데 사용됩니다. 다음은 for문을 사용하여 변수 i가 1부터 10까지의 숫자를 웹 페이지에 출력하는 예제입니다. for문은 초기화, 조건, 증감을 한 줄에 표현하여 반복 작업을 수행하는데 매우 효율적입니다.

  • for (let i = 1; i <= 10; i++) { → for 반복문을 시작합니다. 이 부분은 반복문의 초기화, 조건, 증감 부분을 한 줄에 표현합니다.
  • let i = 1; → 변수 i를 선언하고 초기값으로 1을 할당합니다. 이 변수는 반복문에서 사용됩니다.
  • i <= 10; → 조건으로, i가 10 이하인 동안 반복문을 실행하라고 지정합니다.
  • i++ → 반복문이 한 번 실행될 때마다 i 값을 1씩 증가시킵니다.
  • { → 반복문의 시작을 나타내는 중괄호를 엽니다.
  • document.write(i); → 현재 i 변수의 값을 웹 페이지에 출력합니다. 초기값은 1이므로 먼저 "1"이 출력됩니다.
  • } → 반복문의 끝을 나타내는 중괄호를 닫습니다.
  • 이제 반복문이 처음부터 다시 실행됩니다. i가 2가 되고 "2"가 출력됩니다. 그런 다음 i가 3, 4, 5, ..., 10까지 증가하면서 각 숫자가 출력됩니다.
  • i가 11이 되면 조건이 false가 되고 반복문이 종료됩니다.
11. 중첩 for문

중첩 for문은 하나의 for문 안에 다른 for문이 포함된 반복문입니다.

{
        for( let i=1; i<=2; i++ ){
                for( let j=1; j<=5; j++ ){
                        document.write(i, j);
                }
        }

        // 11 12 13 14 15 21 22 23 24 25
}   

두 개의 중첩된 for문을 사용하여, 외부 반복문의 변수 i가 1에서 2까지, 내부 반복문의 변수 j가 1에서 5까지 변하는 동안 각각의 조합을 출력합니다.

  • for (let i = 1; i <= 2; i++): i를 1로 초기화하고, i가 2 이하인 동안 반복하며, 매 반복마다 i를 1씩 증가시킵니다.
  • for (let j = 1; j <= 5; j++): j를 1로 초기화하고, j가 5 이하인 동안 반복하며, 매 반복마다 j를 1씩 증가시킵니다.
  • document.write(i, j): 현재 i와 j 값을 출력합니다.
12. break문

반복 작업 수행을 종료합니다.

{
        for(let i=1; i<10; i++){
                if( i == 5 ){
                        break;
                }
                document.write(i);
        }

        // 1 2 3 4
}   

break문은 JavaScript에서 반복문(for, while, do...while) 또는 switch 문에서 사용되며, 해당 반복문을 종료하거나 switch 문의 실행을 중단하는 데 사용됩니다. 다음은 for 반복문을 사용하여 1부터 9까지의 숫자를 출력하고 break를 설정한 예제입니다.

  • for (let i = 1; i < 10; i++) { → for 반복문을 시작합니다. 이 부분은 반복문의 초기화, 조건, 증감 부분을 한 줄에 표현합니다.
  • let i = 1; → 변수 i를 선언하고 초기값으로 1을 할당합니다. 이 변수는 반복문에서 사용됩니다.
  • i < 10; → 조건으로, i가 10보다 작은 동안 반복문을 실행하라고 지정합니다.
  • i++ → 반복문이 한 번 실행될 때마다 i 값을 1씩 증가시킵니다.
  • { → 반복문의 시작을 나타내는 중괄호를 엽니다.
  • if (i == 5) { → 조건문을 시작합니다. 현재 반복 회차에서 i가 5와 같은지를 검사합니다.
  • break; → 만약 i가 5와 같다면 break 문을 사용하여 현재 반복문을 즉시 종료합니다.
  • } → 조건문의 끝을 나타내는 중괄호를 닫습니다.
  • document.write(i); → 현재 i 변수의 값을 웹 페이지에 출력합니다.
  • 이제 반복문이 처음부터 다시 실행됩니다. i가 2가 되고 "2"가 출력됩니다. 그런 다음 i가 3, 4까지 증가하면서 각 숫자가 출력됩니다.
  • i가 5가 되면 조건문에서 break 문을 만나게 되고, 반복문이 즉시 종료됩니다.
13. continue문

현재 반복 작업 수행을 건너뛰고 다음 반복문을 실행합니다.

{
        for(let i=1; i<10; i++){
                if( i == 5 ){
                        continue;
                }
                document.write(i);
        }

        // 1 2 3 4 6 7 8 9 
}   

continue문은 JavaScript에서 반복문(for, while, do...while) 내에서 사용되며, 반복문의 현재 회차를 중지하고 다음 회차로 건너뛰는 데 사용됩니다. 다음은 for 반복문을 사용하여 1부터 9까지의 숫자를 출력하고 continue를 설정한 예제입니다.

  • for (let i = 1; i < 10; i++) { → for 반복문을 시작합니다. 이 부분은 반복문의 초기화, 조건, 증감 부분을 한 줄에 표현합니다.
  • let i = 1; → 변수 i를 선언하고 초기값으로 1을 할당합니다. 이 변수는 반복문에서 사용됩니다.
  • i < 10; → 조건으로, i가 10보다 작은 동안 반복문을 실행하라고 지정합니다.
  • i++ → 반복문이 한 번 실행될 때마다 i 값을 1씩 증가시킵니다.
  • { → 반복문의 시작을 나타내는 중괄호를 엽니다.
  • if (i == 5) { → 조건문을 시작합니다. 현재 반복 회차에서 i가 5와 같은지를 검사합니다.
  • continue; → 만약 i가 5와 같다면 continue 문을 사용하여 현재 반복 회차를 중지하고 다음 회차로 넘어갑니다.
  • } → 조건문의 끝을 나타내는 중괄호를 닫습니다.
  • document.write(i); → 현재 i 변수의 값을 웹 페이지에 출력합니다.
  • 이제 반복문이 처음부터 다시 실행됩니다. i가 2가 되고 "2"가 출력됩니다. 그런 다음 i가 3, 4까지 증가하면서 각 숫자가 출력됩니다.
  • i가 5가 되면 조건문에서 continue 문을 만나게 되고, 현재 회차는 중지되고 다음 회차로 넘어갑니다.
  • 반복문은 6부터 9까지의 숫자를 출력하고, i가 10이 되면 조건이 거짓이 되어 반복문이 종료됩니다.