var는 함수 스코프를 가지고 있어서 함수 내에서 선언한 변수는 함수 전체에서 접근 가능.
호이스팅에 의해 변수 선언이 스코프 상단으로 끌어올려지므로, 변수를 선언하기 전에도 사용 가능.
중복 선언이 가능하며, 재할당도 자유로움.
var를 사용하면 같은 변수명을 여러 번 선언해도 오류가 발생하지 않고, 변수 값이 덮어씌워짐.
var는 블록 스코프를 가지지 않기 때문에 if문이나 반복문에서 선언한 변수도 외부에서 접근 가능.
ex)
function Example() {
var count = 0;
if (true) {
var count = 1;
console.log(count); // 출력: 1
}
console.log(count); // 출력: 1
return <div>Count: {count}</div>;
}
function Example() {
let count = 0;
if (true) {
let count = 1;
console.log(count); // 출력: 1
}
console.log(count); // 출력: 0
return <div>Count: {count}</div>;
}
function Example() {
const count = 0;
if (true) {
const count = 1;
console.log(count); // 출력: 1
}
console.log(count); // 출력: 0
return <div>Count: {count}</div>;
}
var는 React에서는 가능한 사용을 피하고, let 또는 const를 대신 사용하는 것이 좋다. var는 호이스팅 등의 특징으로 인해 예기치 않은 동작을 일으킬 수 있기 때문이다.
React에서는 보통 상태 관리를 위해 useState 훅을 사용하므로, var, let, const를 직접 사용하는 경우는 상대적으로 적다. 하지만 컴포넌트 내에서 변수를 선언하거나 임시적인 값 저장 등의 경우에는 차이점과 규칙을 고려하여 적절한 키워드를 선택하여 사용하면 된다.
변수와 함수에 접근할 수 있는 유효한 영역(범위)을 말한다. 즉, 변수와 함수가 어디에서 어디까지 유효한지를 결정한다.
호이스팅(Hoisting)은 JavaScript에서 변수 및 함수 선언을 현재 스코프의 맨 위로 끌어올리는 동작을 말한다. 즉, 코드 실행 전에 변수와 함수 선언이 메모리에 올려지는 것을 의미한다.