본문 바로가기

JavaScript

15장 - let과 const

var- 함수 영역(레벨)의 스코프 

let, const - 블록 영역의 스코프 

let - 값이 자주 바뀌는 변수 

const - 재할당이 없는 변수 

 

1. let을 사용한 변수의 특징 

 

 1) 블록안에서만 쓸 수 있는 변수 

  - 변수를 선언한 블록({}로 묶은 부분)만 유효하고 블록을 벗어나면 사용할 수 없음

<!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>
</head>
<body>
  <script>
   function calcSum(n) {
    let sum = 0;
    for(let i = 1; i <n + 1; i++) { //변수 i 적용 범위
      sum+=i;
    }
    console.log(sum); //변수 sum  적용범위
   }
   calcSum(10); //1부터 10까지 더함
  </script>
</body>
</html>

  - 전역변수 사용하기 

   - let예약어를 쓰지 않고 변수 이름과 초깃값만 할당

<!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>
</head>
<body>
  <script>
   function calcSum(n)
   {
    sum=0; //전역 변수 선언
    for(let i = 1; i < n+1; i++) {
      sum+=i;
    }
   }
   calcSum(10);
   console.log(sum); //전역 변수 사용
  </script>
</body>
</html>

 

 2) 재할당은 가능하지만 재선언은 할 수 없는 변수 

 - 변수 재할당 가능

<!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>
</head>
<body>
  <script>
   function calcSum(n) {
    let sum=0;
    for(let i = 1; i < n+1; i++) {sum += i;} //for문 실행문 끝남
    sum=100; //sum 변수 재할당
    console.log(sum);
   }
   calcSum(10); //for문 실행이 끝나고 이미 계산한 값이 저장되어 있는 sum 변수에 값 100재할당
  </script>
</body>
</html>

- 변수 재선언 불가능

 -> let 예약어는 같은 변수 이름을 중복해서 사용할 수 없음

<!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>재선언할 수 없는 let 변수</title>
</head>
<body>
  <script>
    function calcSum(n) {
      let sum=0;
      for(let i = 1; i < n+1 ; i++) {sum += i;}
      let sum; //sum 변수 재선언
      console.log(sum);
    }
    calcSum(10);
  </script>
</body>
</html>

변수 sum이 중복으로 선언되었다는 메시지

 

 3) 호이스팅이 없는 변수 

  -let 예약어를 사용한 변수는 선언하기 전에 사용할 경우 오류메시지를 나타냄

 

<!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>호이스팅이 없는 let 변수</title>
</head>
<body>
  <script>
    var x = 10;

    function displayNumber() {
      console.log("x is" + x);
      console.log("y is" + y);
      let y = 20; //y 변수 선언
    }
    displayNumber();
  </script>
</body>
</html>

초기화 되지 않은 let 변수를 사용할때 나타나는 오류 메시지

 

2. const를 사용한 변수의 특징

 

  - const로 선언한 변수는 상수 변수 (constant variable)\

  -상수 : 프로그램안에서 변하지 않는 값

  - 재선언하거나 재할당 할 수 없음

 

<!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>재선언할 수 없는 const 변수</title>
</head>
<body>
  <script>
    const currentYear = 2020;
    consol.log(currentYear);
    const currentYear; //currentYear 변수 재선언
  </script>
</body>
</html>

const 변수를 재선언할 때 나타나는 오류 메시지

 

<!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>재할당 할 수 없는 const 변수</title>
</head>
<body>
  <script>
    const currentYear = 2020;
    console.log(currentYear);
    currentYear = 2100; //currentYear 변수 재할당
    console.log(currentYear);
  </script>
</body>
</html>

const 예약어로 변수를 재할당할 때 나타나는 오류 메시지

'JavaScript' 카테고리의 다른 글

15장 실습  (0) 2023.04.07
15장 - 재사용할 수 있는 함수 만들기  (0) 2023.04.07
15장 - var를 사용한 변수의 특징  (0) 2023.04.06
15장 -함수의 선언과 호출  (0) 2023.04.06
14장 마무리 문제 2  (0) 2023.04.06