[JavaScript] var, let, const 선언 및 호이스팅(Hoisting) 개념 이해

JavaScript는 웹 개발에서 가장 널리 사용되는 프로그래밍 언어 중 하나로, 변수를 선언하는 방법으로 var, let, const를 제공합니다. 각각의 키워드는 고유한 특성과 사용 목적을 가지며, 이를 잘 이해하고 적절히 사용하는 것이 중요합니다. 이번 글에서는 var, let, const의 개념과 함께 도입된 시기와 이유, 그리고 호이스팅 개념에 대해 자세히 알아보겠습니다.

var, let, const의 기본 개념

var

JavaScript의 초기 버전부터 존재해 온 키워드로, 변수를 선언할 때 사용합니다. var 키워드는 함수 스코프(function scope)를 가지며, 같은 함수 내에서 재선언과 재할당이 가능합니다.

let

ECMAScript 2015 (ES6)에서 도입된 키워드로, 블록 스코프(block scope)를 가집니다. let 키워드는 동일한 블록 내에서 재선언이 불가능하며, 재할당은 가능합니다.

const

let과 마찬가지로 ES6에서 도입되었으며, 블록 스코프를 가집니다. const 키워드는 재선언과 재할당이 모두 불가능합니다. 초기화 시 값을 반드시 할당해야 합니다.

const와 let의 도입 시기와 이유

const와 let은 ES6(ECMAScript 2015)에서 새롭게 도입되었습니다. 그 이유는 다음과 같습니다.

  • 변수의 스코프 관리: var는 함수 스코프만을 가지므로, 블록 레벨 스코프가 필요한 경우에는 혼란을 초래할 수 있습니다. let과 const는 블록 레벨 스코프를 지원하여, 코드의 가독성과 유지보수성을 높입니다.
  • 재선언 방지: var로 선언된 변수는 동일한 스코프 내에서 여러 번 선언될 수 있어 의도치 않은 버그를 발생시킬 수 있습니다. let과 const는 이를 방지합니다.
  • 안정성: const는 상수를 선언할 때 사용되며, 선언 후 값이 변경되지 않도록 보장합니다. 이는 코드의 안정성을 높이고, 의도하지 않은 값의 변경을 막아줍니다.

호이스팅(Hoisting) 개념

호이스팅은 JavaScript의 변수 선언과 함수 선언이 해당 스코프의 최상단으로 끌어올려지는 동작을 의미합니다. var 키워드는 호이스팅이 발생하지만, let과 const는 호이스팅되더라도 초기화가 되지 않습니다. 이를 이해하면 예기치 않은 오류를 예방할 수 있습니다.

var의 호이스팅 예제

위 코드에서 var x는 선언이 최상단으로 끌어올려지지만, 초기화는 그렇지 않기 때문에 첫 번째 console.log에서 undefined가 출력됩니다.

let과 const의 호이스팅 예제

let과 const는 선언과 초기화가 분리되지 않기 때문에, 선언 이전에 접근하려고 하면 ReferenceError가 발생합니다.

결론

JavaScript에서 변수를 선언할 때 var, let, const를 적절히 사용하는 것은 매우 중요합니다. 각 키워드는 고유한 특성과 목적을 가지고 있으며, 이를 올바르게 이해하고 사용하는 것이 중요합니다. 특히, 호이스팅 개념을 이해하면 변수 선언과 초기화 과정에서 발생할 수 있는 오류를 예방할 수 있습니다.

핵심 요약

  • var: 함수 스코프, 재선언과 재할당 가능, 호이스팅 발생
  • let: 블록 스코프, 재선언 불가, 재할당 가능, 호이스팅 시 초기화되지 않음
  • const: 블록 스코프, 재선언 및 재할당 불가, 호이스팅 시 초기화되지 않음
  • 호이스팅: 변수와 함수 선언이 스코프의 최상단으로 끌어올려지는 현상, var는 초기화되지 않은 상태로 호이스팅됨

용어 정리

  • 스코프(Scope): 변수나 함수가 유효한 범위
  • 블록 레벨 스코프(Block-level scope): 코드 블록(중괄호) 내에서만 유효한 범위
  • 함수 스코프(Function scope): 함수 내에서만 유효한 범위
  • 호이스팅(Hoisting): 변수나 함수 선언이 스코프의 최상단으로 끌어올려지는 동작
이 글은 카테고리: JavaScript/TypeScript에 포함되어 있습니다. 고유주소를 북마크하세요.

댓글 남기기