콘텐츠로 이동

2023 10 18

2023-10-18

JS var, let, const

참고: https://fromnowwon.tistory.com/entry/for%EB%AC%B8-let 참고: https://wonyoung2257.tistory.com/27

  • var, let, const 비교
    • var
      • 재선언 : O
      • 재할당 : O
      • 변수 참조 : O
      • 유효범위 : function scope
    • let
      • 재선언 : X
      • 재할당 : O
      • 변수 참조 : X
      • 유효범위 : block scope
    • const
      • 재선언 : X
      • 재할당 : X
      • 변수 참조 : X
      • 유효범위 : block scope
    • 그러다보니...
      for (var i = 0; i < 5; i++) {
          console.log(i); // 0, 1, 2, 3, 4
      }
      console.log(i); // 5
      
      for (let j = 0; j < 5; j++) {
          console.log(j); // 0, 1, 2, 3, 4
      }
      console.log(j); // j is not defined
      
  • var말고 const, let을 주로 쓰라고 함
    1. 중복 선언
      • var는 중복 선언이 가능함
      • let/const는 중복 선언 언어 차원에서 방지 시켜줌
    2. 함수 레벨 스코프
      • var: 함수레벨 스코프
      • let/const: 블록레벨 스코프
    3. 변수 호이스팅
      • 변수 호이스팅 : 변수 선언문이 코드의 선두로 끌어올려진 것 처럼 동작하는 자바스크립트 고유의 특징...
      • var는 당당하게 변수 호이스팅이 되는 반면, let은 ReferenceError가 나옴
  • 변수 호이스팅
    • 놀랍게도 js는 이딴 코드가 동작한다...
    • var num이 코드의 선두로 끌어올려진 것 마냥 동작한다...
      console.log(num); // undefined
      num = 10;
      console.log(num); // 10
      var num;
      
  • let vs const
    • 공통점
      1. 변수명 중복 선언 X
      2. 블록 레벨 스코프
      3. 변수 호이스팅 안되는 것처럼 동작
    • 차이점
      • let: 재할당 가능, const: 재할당 불가능
        let foo = 1;
        foo = 2;
        
        const bar = 1;
        bar = 2; // TypeError: Assignment to constant variable