자바 스 크 립 트 변수 선언 var let const

2633 단어
선언 변 수 는 세 가지 방식 이 있 습 니 다.
  • var
  • let
  • const

  • var 와 let, const 의 주요 차 이 는 역할 영역 에 있다.
    역할 영역 (범위)
    변 수 는 범위 의 정 의 를 사용 할 수 있 습 니 다. 이 범 위 를 넘 으 면 사용 할 수 없습니다.
    var
    역할 영역: 함수 (함수)
    예 를 들 면:
    function test() {
      var x = 10;
    }
    console.log(x); //      :Uncaught ReferenceError: x is not defined
    

    그러나 다음 과 같은 상황 이 라면:
    if (true) {
      var x = 10;
    }
    console.log(x); //    10
    

    console. log (x) 는 변수 x 가 function 에 존재 하지 않 기 때 문 이 라 고 표시 할 수 있 습 니 다.
    let
    역할 영역: block (블록)
    if (true) {
        let x = 10; 
    } 
    console.log(x); //     :Uncaught ReferenceError: x is not defined
    

    let 를 사용 하면 변수의 역할 영역 을 대괄호 (블록) 로 제한 할 수 있 습 니 다!
    또한, var 를 사용 하면 이른바 '네 임 스페이스 오염' 을 초래 하기 쉬 우 며, 부주의 로 이미 사용 하고 있 는 변수 이름 을 바 꾸 어 코드 운행 과 유지 에 문제 가 생 겼 으 며, let 는 상대 적 으로 많이 사용 되 었 다.
    예 를 들 면:
    let x = 1; //    :   (  )
    if (true) {
      let x = 2; //    :   
      console.log(x); //    2
    }
    console.log(x); //    1
    

    이 두 x 는 완전히 다른 변수 로 여 겨 집 니 다. 블록 밖의 x 값 은 블록 내 x 의 값 에 영향 을 주지 않 기 때문에 네 임 스페이스 오염 문제 가 없 을 것 입 니 다. let 를 var 로 바 꾸 면 두 출력 은 모두 2 가 될 것 입 니 다!
    const
    역할 영역: block (블록)
    const 의 역할 영역 은 let 와 같 습 니 다. const 의 글자 적 의미 와 같이 상수 (constant) 를 선언 하 는 데 사 용 됩 니 다. let 와 달리 변수 (variable) 를 선언 하 는 데 사 용 됩 니 다.
    const x = 10;
    x = 20; //     :Uncaught TypeError: Assignment to constant variable.
    

    const 가 선언 한 변 수 를 수정 하면 오류 메시지 가 발생 합 니 다!
    주의해 야 할 것 은 const 가 Object 를 선언 하면:
    const dog = {
        name: 'pipi',
        color: 'yellow'
    }
    dog.name = 'lucky';
    console.log(dog); //    Object {name: "lucky", color: "yellow"}
    

    이때 도 수정 할 수 있 습 니 다. 이 Object 가 수정 되 는 것 을 금지 하려 면 Object.freeze() 이 방법 을 사용 해 야 합 니 다.
    const dog = {
        name: 'pipi',
        color: 'yellow'
    }
    const myDog = Object.freeze(dog);
    myDog.name = 'lucky'
    console.log(myDog); //    Object {name: "pipi", color: "yellow"}
    

    비록 우리 가 myDog 의 속성 을 수 정 했 지만, 이 때 는 원래 의 값 에 영향 을 주지 않 습 니 다!
    전역 변 수 를 사용 하고 수정 하 는 것 은 매우 위험 합 니 다. let 와 const 를 잘 사용 하면 블록 안에 속 해 야 하 는 변수 가 블록 밖 (전역) 변 수 를 덮어 쓰 는 것 을 피 할 수 있 고 블록 내 에서 블록 밖 (전역) 에 속 하 는 변 수 를 실수 로 수정 하 는 것 도 피 할 수 있 습 니 다.
    let 와 const 를 많이 사용 하 는 것 을 권장 합 니 다. var 는 전체 시스템 에서 여러 역할 영역 이 액세스 되 어야 하 는 상황 에서 사용 할 수 있 습 니 다.
    엄 밀 히 말 하면 var 는 전역 변 수 를 정의 하 는 것 이 아니 라 가끔 선언 하 는 위치 가 전역 적 인 효 과 를 가 질 수 있 습 니 다.
    ES6 이후 버 전도 더 이상 var 를 사용 하지 말고 let 로 바 꾸 는 것 을 권장 합 니 다.

    좋은 웹페이지 즐겨찾기