반응형

이번 4일차에서는 자바스크립트의 함수스코프(Scope) 개념을 배웁니다. 함수는 코드의 재사용성을 높이고, 특정 작업을 모듈화하는 데 유용한 중요한 개념입니다. 스코프는 변수나 함수가 접근할 수 있는 범위를 정의하며, 자바스크립트의 변수 생명 주기 및 가시성을 이해하는 데 중요합니다.


함수 기본 개념

자바스크립트에서 함수는 특정 작업을 수행하는 코드 블록입니다. 함수는 선언 후 호출하여 여러 번 사용할 수 있습니다.

  1. 함수 선언과 호출

    함수는 function 키워드를 사용하여 선언합니다. 선언한 후에는 함수 이름을 통해 호출할 수 있습니다.

    • 함수 선언:

      function greet() {
          console.log("Hello, world!");
      }
    • 함수 호출:

      greet();  // "Hello, world!" 출력
  2. 함수 매개변수와 반환값

    함수는 입력값(매개변수)을 받아 특정 작업을 수행하고, 그 결과를 반환값으로 돌려줄 수 있습니다.

    • 매개변수:
      함수는 매개변수를 사용하여 외부에서 값을 전달받을 수 있습니다.

      function add(a, b) {
          return a + b;
      }
      console.log(add(3, 5));  // 8 출력
    • 반환값:
      return 키워드를 사용하여 함수에서 값을 반환할 수 있습니다.

      function multiply(a, b) {
          return a * b;
      }
      let result = multiply(4, 3);
      console.log(result);  // 12 출력
  3. 함수 표현식 (익명 함수)

    함수 표현식은 함수 선언 대신 변수에 함수를 할당하는 방법입니다. 익명 함수는 이름이 없는 함수로, 주로 일시적인 함수가 필요할 때 사용됩니다.

    • 익명 함수 (함수 표현식):

      const greet = function() {
          console.log("Hello, world!");
      };
      greet();  // "Hello, world!" 출력
    • 즉시 실행 함수 표현식 (IIFE):
      함수 선언과 동시에 실행하는 방법으로, 주로 모듈화에서 사용됩니다.

      (function() {
          console.log("I am an IIFE!");
      })();  // "I am an IIFE!" 출력

스코프(Scope)

스코프는 변수가 유효한 범위(즉, 접근할 수 있는 범위)를 결정합니다. 자바스크립트에서는 전역 스코프지역 스코프가 있으며, let, const, var를 사용할 때 각기 다른 스코프를 가집니다.

  1. 전역 스코프와 지역 스코프

    • 전역 스코프:
      전역 스코프에 선언된 변수는 전체 프로그램에서 접근 가능합니다.

      let globalVar = "I am global";  // 전역 변수
      
      function display() {
          console.log(globalVar);  // "I am global"
      }
      display();
    • 지역 스코프:
      지역 스코프에 선언된 변수는 함수 내에서만 접근할 수 있습니다.

      function localScope() {
          let localVar = "I am local";  // 지역 변수
          console.log(localVar);  // "I am local"
      }
      localScope();
      console.log(localVar);  // 오류: localVar는 지역 변수이므로 접근할 수 없음
  2. let, constvar의 스코프 차이

    • var:
      var로 선언된 변수는 함수 스코프를 가집니다. 즉, 함수 내에서 선언된 var 변수는 함수 내 어디에서든 접근할 수 있습니다.

      function testVar() {
          if (true) {
              var x = 10;  // 함수 내에서 선언된 변수
          }
          console.log(x);  // 10 (블록 밖에서도 접근 가능)
      }
      testVar();
    • letconst:
      letconst블록 스코프를 가집니다. 즉, 중괄호 {} 내에서만 유효하며, 그 밖에서는 접근할 수 없습니다.

      function testLetConst() {
          if (true) {
              let y = 20;  // 블록 스코프 변수
              const z = 30;  // 블록 스코프 상수
          }
          console.log(y);  // 오류: y는 블록 밖에서 접근 불가
          console.log(z);  // 오류: z는 블록 밖에서 접근 불가
      }
      testLetConst();

  1. 클로저(Closure)

    클로저는 함수와 함수가 선언될 때의 환경(즉, 변수들)을 기억하는 함수입니다. 이는 내부 함수가 외부 함수의 변수에 접근할 수 있게 해주는 특징을 가집니다.

    • 클로저 예시:

      function outer() {
          let counter = 0;
          return function inner() {
              counter++;
              console.log(counter);
          };
      }
      
      const increment = outer();
      increment();  // 1 출력
      increment();  // 2 출력
      increment();  // 3 출력

    여기서 inner 함수는 outer 함수의 변수인 counter에 계속 접근할 수 있습니다. 이는 클로저 덕분에 가능하며, counter 변수는 increment 함수가 실행될 때마다 증가합니다.


실습

  1. 간단한 함수를 작성하고, 매개변수를 활용한 계산 함수 만들기

    • 목표: 함수에 매개변수를 전달하여 계산하고, 결과를 반환하는 함수를 만들어 봅니다.

    • 예시:

      // 두 숫자의 합을 구하는 함수
      function add(a, b) {
          return a + b;
      }
      console.log(add(5, 10));  // 15 출력
      
      // 두 숫자의 곱을 구하는 함수
      function multiply(a, b) {
          return a * b;
      }
      console.log(multiply(3, 4));  // 12 출력
  2. 클로저 실습:

    • 내부 함수가 외부 함수의 변수에 접근할 수 있는 클로저를 활용한 예시입니다.
    function createCounter() {
        let count = 0;
        return function() {
            count++;
            console.log(count);
        };
    }
    
    const counter = createCounter();
    counter();  // 1 출력
    counter();  // 2 출력
    counter();  // 3 출력

정리

오늘 4일차에서는 함수스코프에 대해 배웠습니다. 함수는 코드를 재사용할 수 있게 해주며, 매개변수와 반환값을 통해 다양한 작업을 할 수 있습니다. 또한, 스코프를 이해하면 변수가 어디에서 유효한지 파악하고, 클로저를 활용하여 변수의 생명 주기와 접근을 효율적으로 관리할 수 있습니다. 실습을 통해 함수를 작성하고, 매개변수를 활용한 계산 함수와 클로저 개념을 익혔습니다.

반응형
반응형

이번 시간에는 HTML 테이블을 만드는 방법에 대해 배우겠습니다. 테이블은 데이터를 표 형식으로 정리할 때 사용되고, 폼은 사용자로부터 정보를 입력받는 데 사용됩니다. 폼을 사용하면 사용자와 상호작용할 수 있는 웹 페이지를 만들 수 있습니다.


테이블 만들기

HTML에서 테이블을 만들 때는 <table>, <tr>, <td>, <th> 태그를 사용합니다. 각 태그는 테이블의 다른 부분을 정의합니다.

  1. <table> 태그
    <table> 태그는 테이블 전체를 정의합니다.

    <table>
      <!-- 테이블의 내용이 들어감 -->
    </table>
  2. <tr> 태그
    <tr> 태그는 테이블의 행(row)을 정의합니다. 각 행은 여러 개의 셀로 구성됩니다.

    <table>
      <tr> <!-- 행 시작 -->
        <!-- 셀들 -->
      </tr> <!-- 행 끝 -->
    </table>
  3. <td> 태그
    <td> 태그는 테이블의 셀(cell)을 정의합니다. 각 셀은 데이터를 담고 있습니다.

    <table>
      <tr>
        <td>셀 1</td>
        <td>셀 2</td>
      </tr>
    </table>
  4. <th> 태그
    <th> 태그는 테이블의 헤더 셀을 정의합니다. 헤더 셀은 일반적으로 글씨가 굵고 가운데 정렬됩니다. th는 데이터를 설명하는 제목 역할을 합니다.

    <table>
      <tr>
        <th>헤더 1</th>
        <th>헤더 2</th>
      </tr>
      <tr>
        <td>데이터 1</td>
        <td>데이터 2</td>
      </tr>
    </table>

    출력:

    헤더 1 헤더 2
    데이터 1 데이터 2
  5. 테이블에 속성 추가하기
    테이블에 스타일을 추가하여 테이블의 외관을 개선할 수 있습니다. border 속성을 추가하여 테이블에 경계를 설정할 수 있습니다.

    <table border="1">
      <tr>
        <th>헤더 1</th>
        <th>헤더 2</th>
      </tr>
      <tr>
        <td>데이터 1</td>
        <td>데이터 2</td>
      </tr>
    </table>

폼 생성

HTML 폼을 사용하면 사용자가 정보를 입력할 수 있는 양식을 만들 수 있습니다. 폼 태그에는 다양한 입력 필드들이 있으며, 그 중 일부를 소개합니다.

  1. <form> 태그
    <form> 태그는 폼을 정의합니다. 폼의 action 속성은 폼 데이터가 제출될 서버의 URL을 지정하고, method 속성은 데이터를 제출하는 방법을 지정합니다.

    <form action="submit_form.php" method="POST">
      <!-- 폼의 내용이 들어감 -->
    </form>
    • action 속성: 폼이 제출될 서버의 URL을 지정합니다.
    • method 속성: 폼 데이터를 서버에 보내는 방법을 설정합니다. GET은 URL에 데이터를 추가하여 전송하고, POST는 HTTP 요청 본문에 데이터를 담아 전송합니다.
  2. <input> 태그
    <input> 태그는 다양한 종류의 입력 필드를 만듭니다. type 속성을 사용하여 입력 필드의 유형을 정의합니다.

    <input type="text" name="username" placeholder="사용자 이름">
    <input type="password" name="password" placeholder="비밀번호">
    • type="text": 텍스트 입력 필드를 생성합니다.
    • type="password": 비밀번호 입력 필드를 생성합니다. 입력한 내용은 보이지 않게 표시됩니다.
  3. <textarea> 태그
    <textarea> 태그는 여러 줄의 텍스트를 입력받을 수 있는 영역을 생성합니다. 예를 들어, 사용자에게 의견을 받거나 긴 텍스트를 입력받을 때 사용됩니다.

    <textarea name="comments" rows="4" cols="50" placeholder="여기에 의견을 남겨주세요"></textarea>
    • rows: 텍스트 영역의 높이를 정의합니다.
    • cols: 텍스트 영역의 너비를 정의합니다.
  4. <select><option> 태그
    <select> 태그는 드롭다운 목록을 생성합니다. <option> 태그는 목록의 각 항목을 정의합니다.

    <select name="country">
      <option value="kr">대한민국</option>
      <option value="us">미국</option>
      <option value="jp">일본</option>
    </select>
    • <option>: 드롭다운 목록의 항목을 정의합니다.

폼 속성

폼 태그의 여러 속성을 활용하여 폼의 동작 방식을 제어할 수 있습니다. 주요 속성은 다음과 같습니다:

  1. action 속성
    폼 데이터를 전송할 서버의 URL을 지정합니다.

    <form action="submit_form.php" method="POST">
  2. method 속성
    폼 데이터를 서버로 보내는 방법을 설정합니다. POSTGET 방식으로 데이터를 전송할 수 있습니다.

    <form action="submit_form.php" method="POST">
  3. name 속성
    각 입력 필드에 name 속성을 설정하면 서버에 제출된 데이터에서 해당 필드를 구분할 수 있습니다. name은 필수는 아니지만, 데이터 처리 시 매우 중요합니다.

    <input type="text" name="username" placeholder="사용자 이름">

실습: 간단한 회원가입 폼 만들기

이제 간단한 회원가입 폼을 만들어 보겠습니다. 이 폼은 사용자로부터 이름, 이메일, 비밀번호 등을 받는 폼입니다.

<!DOCTYPE html>
<html lang="ko">
  <head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>회원가입 폼</title>
  </head>
  <body>
    <h1>회원가입</h1>
    <form action="submit_form.php" method="POST">
      <label for="username">사용자 이름:</label><br>
      <input type="text" id="username" name="username" placeholder="사용자 이름"><br><br>

      <label for="email">이메일:</label><br>
      <input type="email" id="email" name="email" placeholder="이메일"><br><br>

      <label for="password">비밀번호:</label><br>
      <input type="password" id="password" name="password" placeholder="비밀번호"><br><br>

      <label for="gender">성별:</label><br>
      <input type="radio" id="male" name="gender" value="male">
      <label for="male">남성</label>
      <input type="radio" id="female" name="gender" value="female">
      <label for="female">여성</label><br><br>

      <label for="country">국가:</label><br>
      <select id="country" name="country">
        <option value="kr">대한민국</option>
        <option value="us">미국</option>
        <option value="jp">일본</option>
      </select><br><br>

      <label for="comments">의견:</label><br>
      <textarea id="comments" name="comments" rows="4" cols="50" placeholder="여기에 의견을 남겨주세요"></textarea><br><br>

      <input type="submit" value="회원가입">
    </form>
  </body>
</html>

이 코드는 회원가입 폼을 작성합니다. 사용자 이름, 이메일, 비밀번호, 성별, 국가, 의견을 입력받을 수 있으며, "회원가입" 버튼을 클릭하면 서버로 데이터를 전송합니다. 이 폼은 submit_form.php로 데이터를 보내게 되며, 실제 데이터 처리 기능은 서버 측에서 구현해야 합니다.


결론

오늘은 테이블에 대해 배웠습니다. 테이블은 데이터를 표 형식으로 정리하는 데 유용하고, 폼은 사용자로부터 데이터를 입력받는 데 사용됩니다. 다양한 폼 입력 필드(<input>, <textarea>, <select>)와 폼 속성(action, method, name)을 활용하여 동적인 웹 페이지를 만들 수 있습니다.

반응형

'개발 > HTML' 카테고리의 다른 글

6일차: HTML5 및 멀티미디어  (0) 2025.02.01
5일차: HTML 속성 및 스타일링  (1) 2025.01.31
3일차: 이미지와 리스트  (0) 2025.01.29
2일차: 텍스트 형식화와 링크  (2) 2025.01.28
1일차: HTML 기본 이해  (0) 2025.01.27
반응형

이번 3일차에서는 자바스크립트의 조건문반복문을 배우게 됩니다. 조건문을 사용하면 프로그램에서 특정 조건을 만족할 때 실행할 코드를 제어할 수 있으며, 반복문을 사용하면 특정 작업을 반복해서 실행할 수 있습니다. 두 개념은 자바스크립트에서 매우 중요하며, 프로그램의 흐름을 제어하는 데 유용하게 사용됩니다.


조건문

조건문은 주어진 조건이 참인지 거짓인지에 따라 프로그램의 흐름을 제어하는 역할을 합니다. 자주 사용되는 조건문에는 if, else, else ifswitch문이 있습니다.

  1. if:

    • 주어진 조건이 true일 경우에만 코드 블록을 실행합니다.
      let age = 18;
      if (age >= 18) {
        console.log("성인입니다.");
      }
  2. else:

    • if 조건이 false일 경우 실행됩니다.
      let age = 16;
      if (age >= 18) {
        console.log("성인입니다.");
      } else {
        console.log("미성년자입니다.");
      }
  3. else if:

    • 여러 조건을 검사할 때 사용합니다. 첫 번째 조건이 false일 경우 두 번째 조건을 검사합니다.
      let age = 20;
      if (age < 18) {
        console.log("미성년자입니다.");
      } else if (age >= 18 && age < 65) {
        console.log("성인입니다.");
      } else {
        console.log("노인입니다.");
      }
  4. switch:

    • 주어진 값에 따라 여러 가지 조건을 처리할 때 사용합니다. if-else문을 대체할 수 있습니다.
      let day = 2;
      switch (day) {
        case 1:
            console.log("월요일");
            break;
        case 2:
            console.log("화요일");
            break;
        case 3:
            console.log("수요일");
            break;
        default:
            console.log("주말입니다.");
      }

반복문

반복문은 특정 조건이 참인 동안 계속해서 코드를 반복적으로 실행할 수 있게 해줍니다. 자바스크립트에서 자주 사용하는 반복문에는 for, while, do...while문이 있습니다.

  1. for:

    • 반복 횟수가 정해져 있을 때 사용합니다. for문은 반복 횟수, 조건, 증가/감소식을 포함한 문법을 가집니다.
      for (let i = 1; i <= 5; i++) {
        console.log(i);  // 1, 2, 3, 4, 5 출력
      }
  2. while:

    • 반복 조건이 참일 동안 계속해서 실행됩니다. 반복 횟수가 정해지지 않은 경우에 사용합니다.
      let i = 1;
      while (i <= 5) {
        console.log(i);  // 1, 2, 3, 4, 5 출력
        i++;
      }
  3. do...while:

    • do...while문은 조건이 false일지라도 코드 블록을 최소 한 번 실행합니다. 주로 조건을 먼저 확인하지 않고 실행할 때 사용됩니다.
      let i = 1;
      do {
        console.log(i);  // 1, 2, 3, 4, 5 출력
        i++;
      } while (i <= 5);
  4. break:

    • 반복문을 중지시키는 데 사용됩니다.
      for (let i = 1; i <= 5; i++) {
        if (i === 3) {
            break;  // i가 3이면 반복문을 종료합니다.
        }
        console.log(i);  // 1, 2 출력
      }
  5. continue:

    • 현재 반복을 건너뛰고 다음 반복으로 넘어가게 합니다.
      for (let i = 1; i <= 5; i++) {
        if (i === 3) {
            continue;  // i가 3이면 이번 반복을 건너뛰고 다음 반복으로 넘어갑니다.
        }
        console.log(i);  // 1, 2, 4, 5 출력
      }

실습

  1. 사용자 입력에 따라 결과를 출력하는 조건문 실습:

    • 사용자가 입력한 나이에 따라 성인인지 미성년자인지 출력하는 조건문을 작성합니다.
    let age = prompt("나이를 입력하세요: ");
    age = Number(age);  // 사용자 입력값은 문자열이므로 숫자로 변환
    
    if (age >= 18) {
        console.log("성인입니다.");
    } else {
        console.log("미성년자입니다.");
    }
  2. 반복문을 사용하여 1부터 10까지 숫자 출력하기:

    • for문을 사용하여 1부터 10까지의 숫자를 출력합니다.
    for (let i = 1; i <= 10; i++) {
        console.log(i);  // 1, 2, 3, ..., 10 출력
    }

정리

오늘 3일차에서는 자바스크립트의 조건문반복문을 배웠습니다. 조건문을 통해 프로그램의 흐름을 제어하고, 반복문을 통해 특정 작업을 반복 실행할 수 있게 됩니다. 이를 통해 보다 동적인 웹 애플리케이션을 만들 수 있습니다. 실습을 통해 사용자 입력을 처리하고, 반복문을 이용해 여러 값을 출력하는 방법을 익혔습니다.

반응형

+ Recent posts