변수

AI
qwen-3-235b-a22b
작성자
익명
작성일
2025.07.31
조회수
3
버전
v1

변수

개요

JavaScript에서 변수(Variable)는 데이터를 저장하고 참조하기 위한 기본적인 수단입니다. 변수는 동적 타이핑(Dynamic Typing)을 특징으로 하며, 선언 방식([var](/doc/%EA%B8%B0%EC%88%A0/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D/var/var), [let](/doc/%EA%B8%B0%EC%88%A0/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D/let/let), [const](/doc/%EA%B8%B0%EC%88%A0/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D/const/const))에 따라 스코프(Scope)와 호이스팅(Hoisting) 동작이 달라집니다. 본 문서에서는 변수의 선언 방법, 스코프, 데이터 타입, 호이스팅 개념 및 최선의 사용법을 다룹니다.


변수 선언과 할당

1. 선언 키워드

JavaScript에서 변수를 선언하는 방법은 세 가지입니다: - var: 함수 스코프를 가지며 호이스팅 발생. - let: 블록 스코프를 가지며 호이스팅되지 않음. - const: 불변 참조를 위한 블록 스코프 변수.

var name = "Alice";    // 함수 스코프
let age = 25;          // 블록 스코프
const PI = 3.14;       // 상수 (재할당 불가)

2. 선언과 할당의 분리

변수는 선언과 동시에 값을 할당할 수 있지만, 분리도 가능합니다:

let score;
score = 95; // 나중에 할당

3. var, let, const 비교

특성 var let const
스코프 함수 스코프 블록 스코프 블록 스코프
호이스팅 O X X
재선언 가능 O X X
재할당 가능 O O X

스코프(Scope)

1. 전역 스코프 (Global Scope)

변수를 함수 외부에서 선언하면 전역 스코프를 가집니다:

let globalVar = "전역 변수";

2. 함수 스코프 (Function Scope)

var로 선언된 변수는 함수 내부에서만 접근 가능:

function example() {
  var localVar = "함수 스코프";
}
console.log(localVar); // ReferenceError

3. 블록 스코프 (Block Scope)

letconst{} 내부에서만 유효:

if (true) {
  let blockVar = "블록 스코프";
}
console.log(blockVar); // ReferenceError


호이스팅 (Hoisting)

1. 개념

변수 선언이 코드 실행 이전에 상단으로 이동되는 현상입니다. var는 값 초기화는 호이스팅되지 않으며, letconst는 호이스팅이 발생하지 않습니다.

console.log(hoistedVar); // undefined
var hoistedVar = 5;

console.log(hoistedLet); // ReferenceError
let hoistedLet = 10;

2. 호이스팅의 함정

var의 호이스팅은 예기치 않은 동작을 유발할 수 있습니다. 따라서 letconst 사용이 권장됩니다.


데이터 타입과 변수

1. 원시 타입 (Primitive Types)

변수에 할당된 값이 직접 저장됩니다: - Number: 42, 3.14 - String: "Hello" - Boolean: true, false - Null: null - Undefined: undefined - Symbol: Symbol('id')

2. 참조 타입 (Reference Types)

객체나 배열은 메모리 주소를 참조합니다:

let user = { name: "Bob" };
let arr = [1, 2, 3];

3. 타입 확인

[typeof](/doc/%EA%B8%B0%EC%88%A0/%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D/%EB%8D%B0%EC%9D%B4%ED%84%B0%20%ED%83%80%EC%9E%85/typeof) 연산자로 타입을 확인할 수 있습니다:

console.log(typeof age); // "number"
console.log(typeof user); // "object"


최선의 사용법 (Best Practices)

1. 의미 있는 이름

변수명은 명확하고 묘사적이어야 합니다:

// 좋음
let userAge = 20;

// 나쁨
let x = 20;

2. 전역 변수 최소화

전역 변수는 네임스페이스 오염을 방지하기 위해 최소화해야 합니다.

3. const 우선 사용

변수 값이 변경되지 않을 경우 const를 사용해 불변성을 보장합니다.

4. 호이스팅 문제 피하기

var 대신 letconst를 사용해 호이스팅 관련 버그를 방지합니다.


참고 자료


이 문서는 JavaScript 변수의 기본 개념과 활용 방식을 체계적으로 정리하여 초보자와 중급 개발자 모두에게 도움이 되도록 구성되었습니다.

AI 생성 콘텐츠 안내

이 문서는 AI 모델(qwen-3-235b-a22b)에 의해 생성된 콘텐츠입니다.

주의사항: AI가 생성한 내용은 부정확하거나 편향된 정보를 포함할 수 있습니다. 중요한 결정을 내리기 전에 반드시 신뢰할 수 있는 출처를 통해 정보를 확인하시기 바랍니다.

이 AI 생성 콘텐츠가 도움이 되었나요?