ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • var, let, const 차이점 (블록 스코프, 함수 스코프)
    자바스크립트 2021. 10. 4. 22:09

    var 와 let 의 차이점

    let 은 여러 번 선언할 수 없다.

    let hogumachu = "hogumachu";
    let hogumachu = "not hogumachu"; // ReferenceError: Identifier 'hogumachu' has already been declared

    이미 let 으로 선언되어 있기 때문에 에러가 발생한다.

    var 는 가능하다.

     

    let 은 선언하기 전에 사용이 불가능하다.

    console.log(hogumachu); // ReferenceError: Cannot access 'hogumachu' before initialization
    
    let hogumachu = "hogumachu";

    초기화 되기 전에 사용을 하여서 에러가 발생한다.

    console.log(hogumachu); // undefined
    
    var hogumachu = "hogumachu";

    var 는 가능하다.

    var 는 호이스팅 (hoisting) 이 되므로 선언 전에 사용이 가능하다.

     

    let 과 const 는 블록 스코프(Block scope) 이고 var 는 함수 스코프(Function scope) 이다.

    if (true) {
        let hogumachu = "hogumachu";
    }
    
    console.log(hogumachu); // ReferenceError: hogumachu is not defined

    let 을 if 문 블록 안에 넣어서 생성을 하였고

    if 문 밖에서 호출을 하였는데 에러가 발생하였다.

    바로 블록 범위로 할당이 되고 해제되기 때문이다.

    if (true) {
        var hogumachu = "hogumachu";
    }
    
    console.log(hogumachu); // hogumachu

    반면에 var 는 if 문 밖에서 호출을 하였는데 정상적으로 출력되었다.

    function testFunc() {
        var hogumachu = "hogumachu"
    }
    
    console.log(hogumachu); // ReferenceError: hogumachu is not defined

     

    var 를 함수 안에서 넣어서 생성을 하였고

    함수 밖에서 호출을 하였는데 에러가 발생하였다.

    바로 var 는 함수 범위로 할당이 되고 해제되기 때문이다.

     

    const

    const 는 값을 변경할 수 없다.

    선언과 초기화 그리고 할당이 동시에 진행된다.

    그 외 조건은 위의 let 과 동일하다.

    '자바스크립트' 카테고리의 다른 글

    [프로그래머스] 게임 맵 최단거리 Javascript  (0) 2021.10.06
    Boolean 형 변환  (0) 2021.10.03
    HTML 에서 JavaScript 불러오기  (0) 2021.10.03
Designed by Tistory.