IT/면접

Q. var, let, const의 차이

뀨뿌뀨뿌 2023. 8. 8. 15:18

❓var란?

- var는 가장 오래된 변수 선언 방식이며 범위는 전역 범위 혹은 함수 범위로 지정됨
- 변수는 선언된 함수 내부에서 어디에서든 접근할 수 잇음
- var 변수는 호이스팅(hoisting)의 영향을 받음
  -> var 변수가 선언되기 전에 사용되더라도 JavaScript 엔진이 변수 선언을 스크립트의 상단으로 끌어올린다는 것을 의미함

❓let이란?

- let은 ES6(ECMAScript 2015)에 도입된 새로운 변수 키워드
- let으로 선언된 변수는 블록범위(block-scope)를 가짐/
  -> 변수가 선언된 블록, 즉 중괄호 {} 내에서만 접근할 수 있음을 의미함
- let 변수는 호이스팅의 영향을 받지만, 초기화 전에는 접근할 수 없어서 일종의 임시 사각 지대(Temporal DeadZone, TDZ)를 형성함

❓const란?

- const도 ES6에서 도입된 키워드
- const는 상수를 선언하는 데 사용되며, 한 번 선언하고 값을 할당하면 그 값을 변경할 수 없음
- const도 블록 범위(block-scope)를 가지고 호이스팅의 영향을 받지만 let처럼 초기화 전에는 접근할 수 없음

JavaScript에서 var, let, const는 변수 선언에 사용되는 키워드입니다.
var는 주로 함수 번위를 가지며 호이스팅이 발생합니다. 즉, 변수 선언이 실행 컨텍스트의 맨 위로 끌어올려지지만 초기화는 그 위치에서 일어납니다.
let은 ES6부터 도입된 방식으로, 블록 범위를 가집니다. 이는 특정 블록 내에서만 사용할 수 있다는 것을 의미합니다. let도 호이스팅에 영향을 받지만 변수에 접근하기 전에 초기화해야 합니다.
마지막으로 const는 블록 범위를 가지며, 한 번 할당된 값을 변경할 수 없습니다. 이는 상수 값을 가질 때 유용하게 사용됩니다.
코드의 예측 가능성과 안정성을 위해 가능하면 const를 우선저긍로 사용하고, 필요한 경우에만 let을 사용하는 습관을 가지고 있습니다. var는 호이스팅과 함수 범위의 동자긍로 인해 혼란을 초래할 수 있기 때문에 사용을 지양합니다.