본 예제는 다음 환경에서 실행되었습니다. Ubuntu 19.04 / Chrome 77.0.3865.120
옛날 자바스크립트 예제들을 보면, 변수를 선언할 때 대체로 var를 이용하여 선언한다.
그러나 요즘은 let
을 사용하는 것이 권장되는 편이던데, 뭐가 다른 거지?
let,const <-> var의 차이: 스코프 범위의 차이!
let, const와 var를 구분짓는 가장 큰 차이는 서로 다른 스코프 범위를 가짐이다.
전자는 block-scoped이며 후자는 function-scoped이다.
즉 let, const는 선언된 블록, 즉 중괄호 밖으로 나가면 효력을 잃고, var는 같은 함수 안이라면 어디서든 사용할 수 있다. (물론 함수 안에 선언하지 않으면 둘 다 전역 스코프가 된다)
호이스팅 (Hoisting)
모든 변수의 선언은 코드 중간에서 하더라도 자바스크립트 엔진에 의해 전역 스코프의 경우 코드의 최상단에서, 지역 스코프의 경우 함수 최상단에서 선언된 것처럼 해석되며 이를 ‘호이스팅’이라 한다.
`console.log (greeter); var greeter = "say hello" //위와 같은 코드는 이렇게 해석된다. var greeter; console.log(greeter); // 아직 할당하기 전이므로 undefined가 출력됨 greeter = "say hello"`
let과 const의 차이: 최초 선언 후 재정의 가능 여부
let은 선언 후 값을 재정의할 수 있다. const는 처음 선언할 때 값을 입력하면 절대 수정할 수 없다.
그렇기 때문에 node.js 모듈 등 변경할 필요 없는 상수를 전역 변수로 로딩해야 할 때는 const를 사용한다.
Comments powered by Disqus.