ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [js] var 그리고 let, const의 차이점
    내가 보는 이야기 2022. 9. 13. 17:28
    728x90
    반응형

    ES6(ES2015) 이전에는 변수를 선얼할 수 있는 키워드가 var가 유일했다.

    ES6이후로는 let, const 키워드가 추가되어 변수 선언을 할 수 있게 되었다.

     

    var 는 함수 레벨 스코프이고 let, const는 블럭 레벨 스코프이다.

     

    var로 선언한 변수는 선언 전에 사용해도 에러가 나지 않지만 let, const 는 에러가 발생합니다.

     

    var, let은 변수 선언시 초기 값을 주지 않아도 되지만 const는 반드시 초기값을 할당해야 합니다.

     

    var, let은 값을 다시 할당할 수 있지만 const는 한번 할당한 값은 변경할 수 없습니다.

     

    ** var의 경우만 호이스팅 때문에 에러가 나는것으로 판단 할 수 있지만 let, const도 마찬가지로 호이스팅된다.

    var의 경우 호이스팅되면서 초기 값이 없으면 자동으로 undefined를 초기값으로 메모리에 할당 하기 때문이다.

    console.log(foo); //undefined
    var foo;

     

    그러나 let, const는 호이스팅 되면서 초기값이 없으면 메모리에 할당하지 않으므로 에러를 발생시킵니다.

    console.log(foo); // Uncaught ReferenceError: foo is not defined
    let foo = 1;
    console.log(foo); // 1

     

    **const로 선언한 변수는 가리키고 있는 자체는 변경 불가능 하지만 객체 내의 프로퍼티는 변경 가능 하다.

    const name = {first: 'jang', last: 'ms'};
    
    name = 'mm'; // Uncaught TypeError: Assignment to constant variable.
    
    /* 에러가 발생하지 않는다. **/
    name.first = '장';
    name.last = '명수';
    delete name.last;

     ##만약 객체 내의 프로퍼티도 변경하지 않으려면 Object.freeze() 메소드를 사용

     

    결론: var는 쓰지 않는게 정신건강에 좋다. 메모리 누수 및 각종 변수 처리 에러 발생

    반응형

    댓글

Designed by 맹