💻
프로그래밍
변수
Variable
데이터를 저장하는 메모리 공간의 이름. 타입에 따라 숫자, 문자열, 객체 등을 저장.
Variable
데이터를 저장하는 메모리 공간의 이름. 타입에 따라 숫자, 문자열, 객체 등을 저장.
변수(Variable)는 프로그램에서 데이터를 저장하고 참조하기 위한 이름이 붙은 메모리 공간입니다. 변수를 통해 숫자, 문자열, 객체 등 다양한 값을 저장하고 나중에 사용할 수 있습니다.
변수에는 스코프(범위)가 있습니다. 전역 변수는 프로그램 전체에서 접근 가능하고, 지역 변수는 선언된 블록 내에서만 유효합니다. JavaScript의 var는 함수 스코프, let/const는 블록 스코프를 가집니다.
변수의 불변성(immutability)은 중요한 개념입니다. JavaScript의 const, Python의 관례적 대문자 변수명, Rust의 기본 불변 바인딩은 값이 변경되지 않음을 나타냅니다. 불변 변수는 버그를 줄이고 코드 이해를 쉽게 합니다.
타입 시스템에 따라 변수 선언 방식이 다릅니다. 정적 타입 언어(Java, TypeScript)는 타입을 명시하고, 동적 타입 언어(Python, JavaScript)는 런타임에 타입이 결정됩니다. 타입 추론을 지원하는 언어에서는 컴파일러가 타입을 자동으로 유추합니다.
// 변수 선언 방식
var oldWay = "함수 스코프 (권장하지 않음)";
let mutableVar = "블록 스코프, 재할당 가능";
const immutableRef = "블록 스코프, 재할당 불가";
// 스코프 예시
function scopeExample() {
let blockScoped = "함수 내부";
if (true) {
let innerVar = "블록 내부";
var functionVar = "함수 스코프";
console.log(blockScoped); // 접근 가능
}
console.log(functionVar); // 접근 가능 (var)
// console.log(innerVar); // 에러! (let은 블록 스코프)
}
// 호이스팅
console.log(hoisted); // undefined (var는 호이스팅)
var hoisted = "값";
// console.log(notHoisted); // 에러! (let/const는 TDZ)
let notHoisted = "값";
// 구조 분해 할당
const user = { name: "김개발", age: 30 };
const { name, age } = user;
const numbers = [1, 2, 3];
const [first, second] = numbers;
// const와 객체 변경
const config = { debug: true };
config.debug = false; // 가능 (참조는 불변, 내용은 변경 가능)
// config = {}; // 에러! (재할당 불가)