반응형
Recent Posts
Recent Comments
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

Bbaktaeho

[javascipt] var, let, const (자바스크립트, 변수, 스코프, scope) 본문

프로그래밍 (Programming)/자바스크립트 (JavaScript)

[javascipt] var, let, const (자바스크립트, 변수, 스코프, scope)

Bbaktaeho 2020. 3. 28. 13:45
반응형

📚 var, let, const

  • 자바스크립트 문법에서 변수를 선언할 때 사용하는 키워드
  • es6에서 추가된 let, const
  • 스코프(scope)란 유효 범위의 영역을 뜻함 즉, 중괄호 속의 영역

📗 var

함수의 스코프에서만 유효

  • var 키워드를 반복문 스코프에서 선언할 때
    반복문 영역에서 유효하지 않고 마치 전역 변수처럼 동작한다

      for (var i=0; i<10; i++);
    
      console.log(i);
      10
  • var 키워드를 조건문 스코프에서 선언할 때
    반복문과 마찬가지로 조건문 영역에서 전역 변수처럼 동작한다

      if(true){
          var test = '테스트입니다.';
          console.log(test); // 1
      }
      console.log(test); // 2
      테스트입니다. // 1
      테스트입니다. // 2
  • var 키워드를 함수 스코프에서 선언할 때
    함수 내에서 선언된 var 변수는 함수 스코프에서만 유효하다

      function test() {
          var test1 = '테스트';
          var test2 = '입니다.'
          return test1 + test2;
      }
      console.log(test1); // ReferenceError: test1 is not defined (주석 후 실행)
      console.log(test2); // ReferenceError: test2 is not defined (주석 후 실행)
      console.log(test());
      테스트입니다.

📒 let

모든 중괄호에서 스코프를 가지게 하는 키워드

  • let 키워드를 반복문과 조건문에서 선언할 때
    var 키워드와 다르게 모든 영역에서 유효하다

      for(let i=0; i<5; i++){
          console.log('for문에서 선언한 i : ',+i);
      }
      if (true){
          let i = 'if문에서 선언한 i';
          console.log(i);
      }
      console.log(i);
      for문에서 선언한 i :  0
      for문에서 선언한 i :  1
      for문에서 선언한 i :  2
      for문에서 선언한 i :  3
      for문에서 선언한 i :  4
      if문에서 선언한 i
      // error
      console.log(i);
                  ^
      ReferenceError: i is not defined
  • let 키워드를 함수에서 사용할 때
    var 키워드와 같은 동작을 한다


📘 const

상수로 만들어주는 키워드

  • let 키워드와 같은 스코프 개념을 가짐

  • 배열 혹은 객체에서 요소를 추가, 변경, 제거 동작은 가능함

  • 재할당을 할 수 없는 키워드

  • const 키워드를 초기화 없이 사용할 때
    예외가 발생한다

      const test;
      console.log(test);
      const test;
            ^^^^
      SyntaxError: Missing initializer in const declaration
  • const 키워드를 배열 또는 객체로 사용할 때
    초기 할당이 되어있다면 추가, 삭제, 변경이 가능하다

      const arr = [1,2,3,4,5];
      console.log(arr);
    
      // 추가 가능
      arr.push(6);
      console.log(arr);
      arr.pop();
      arr.pop();
      console.log(arr);
      [ 1, 2, 3, 4, 5 ]
      [ 1, 2, 3, 4, 5, 6 ]
      [ 1, 2, 3, 4 ]
  • const 키워드로 선언된 변수를 재할당 할 때
    예외가 발생한다

      const arr = [1,2,3,4,5];
      arr = [1,2,3];
      arr = [1,2,3];
           ^
      TypeError: Assignment to constant variable.
반응형