ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • var vs. let vs. const ?
    Eureka! 2019. 10. 1. 17:05

    개인적으로 잊고 싶지 않은 내용을 남긴다.

    보통 작업했던 일반적인 SI 사이트의 경우 var를 극단적으로 선호? 아니 ES5 문법을 쓰던데.
    처음에 근무했던 회사는 ES6 문법을 사용했었다.. 물론 알지도 못하고 그냥 썻지만서도..
    velopert 쓰신 책을 보다가 정리가 너무 잘되어있어서 해당 내용을 잊지 않기 위해 남긴다.

    /* velopert님 서적 p.65 */
    function myFunction() {
      var a = "hello";
      if( true ) {
        var a = "bye";
        console.log(a); // bye
      }
      console.log(a); // bye
    }
    myFunction();

    위 코드를 보면 var로 선언된 a의 scope는 function 즉 함수단위기 때문에 자연스럽게 bye가 연속 출력된다.
    이런 문제를 해결하기 위해서 let, const로 ES6에서는 분리가 되는데

    function myFunction() {
      let a = "hello";
      if( true ) {
        let a = "bye";
        console.log(a); // bye
      }
      console.log(a); // hello
    }
    myFunction();

    위 코드를 실행해 보면 bye, hello가 출력된다. scope가 블록 단위로 변경된 것인데,
    웹으로 찾아보면 단순히 scope가 함수 => 블록 단위로 변경되었다는 글이 보편적이었는데..
    (물론 함수와 블록의 단위를 명확히 이해 못한 내 무지가 문제지만..)
    velopert님 책에서는 아주 간단한 예를 들어서 설명해주셔서 쉽게 이해가 되었다.

    또한 마찬가지로 const를 살펴보면

    const a = "thiporia";
    a = "sseon";    // Uncaught TypeError: Assignment to constant variable. at <anonymous>:1:3

    이라는 에러가 뜨는데, 첫번째 줄 3번째 즉 = 에서 에러가 나는데, 상수를 재정의 할 수 없다는 에러이다.

    후 다시는 보지 않길 바란다. 머릿속에서 사라지지 않길.

    'Eureka!' 카테고리의 다른 글

    Volta???  (0) 2023.10.05
    [Testing-library] render.. ? append?  (0) 2022.03.30
    [ES6] const ? 불변아니였어?  (0) 2019.10.31
    Array 채우기와 랜덤 추출!  (0) 2019.10.28

    댓글

Designed by Tistory.