반응형
자바스크립트에서 **변수(variable)**는 데이터를 저장하고 참조하는 데 사용되는 컨테이너입니다. 변수를 사용하면 데이터를 메모리에 저장하고, 나중에 해당 데이터에 이름을 통해 접근할 수 있습니다.
변수 선언 및 초기화
자바스크립트에서 변수를 선언하는 방법은 주로 var, let, const 세 가지 키워드를 사용합니다.
var
var는 초기 자바스크립트에서 변수를 선언하는 데 사용되었던 키워드입니다.
- 재선언 및 재할당 가능: 같은 이름의 변수를 여러 번 선언할 수 있고, 값을 자유롭게 변경할 수 있습니다.
- 함수 스코프(Function Scope): var로 선언된 변수는 자신이 선언된 함수 내에서만 유효합니다. 함수 밖에서는 접근할 수 없습니다.
var name = "Alice";
console.log(name); // "Alice"
var name = "Bob"; // 재선언 가능
console.log(name); // "Bob"
name = "Charlie"; // 재할당 가능
console.log(name); // "Charlie"
let
let은 ES6(ECMAScript 2015)부터 도입된 키워드로, var의 단점을 보완하기 위해 만들어졌습니다.
- 재선언 불가능, 재할당 가능: 한 번 선언된 변수는 다시 선언할 수 없지만, 값은 변경할 수 있습니다.
- 블록 스코프(Block Scope): let으로 선언된 변수는 {}(중괄호)로 둘러싸인 블록 내에서만 유효합니다.
let age = 30;
console.log(age); // 30
// let age = 40; // SyntaxError: Identifier 'age' has already been declared (재선언 불가능)
age = 40; // 재할당 가능
console.log(age); // 40
if (true) {
let innerAge = 50;
console.log(innerAge); // 50
}
// console.log(innerAge); // ReferenceError: innerAge is not defined (블록 밖에서 접근 불가능)
const
const도 let과 함께 ES6에서 도입되었으며, **상수(constant)**를 선언할 때 사용합니다.
- 재선언 및 재할당 불가능: 변수 선언과 동시에 초기화해야 하며, 선언 이후에는 값과 이름 모두 변경할 수 없습니다.
- 블록 스코프(Block Scope): let과 동일하게 블록 스코프를 가집니다.
const PI = 3.14159;
console.log(PI); // 3.14159
// const PI = 3.14; // SyntaxError (재선언 불가능)
// PI = 3.14; // TypeError: Assignment to constant variable (재할당 불가능)
const person = { name: "David" };
person.name = "Eve"; // 객체 내부의 속성은 변경 가능
console.log(person.name); // "Eve"
var, let, const의 차이점 요약
특징 | var | let | const |
재선언 | ⭕️ 가능 | ❌ 불가능 | ❌ 불가능 |
재할당 | ⭕️ 가능 | ⭕️ 가능 | ❌ 불가능 |
스코프 | 함수 스코프 | 블록 스코프 | 블록 스코프 |
용도 | (구식) | 값 변경이 필요한 변수 | 값 변경이 불가능한 상수 |
현대 자바스크립트 개발에서는 var 사용을 지양하고, 기본적으로 const를 사용하여 상수를 선언하며, 재할당이 필요한 경우에만 let을 사용하는 것을 권장합니다.
반응형
'자바스크립트_Javascript' 카테고리의 다른 글
Javascript: 연산자 Operators (4) | 2025.08.13 |
---|---|
Javascript: 호이스팅 Hoisting (1) | 2025.08.13 |
Javascript: 자바스크립트로 원의 넓이와 둘레 계산기 (4) | 2025.07.27 |
Javascript: 자바스크립트로 CSS를 사용하는 간단한 예제 (1) | 2025.07.26 |
Javascript: 자바스크립트는 html 문서 아무 위치에나 삽입 할 수 있습니다 (0) | 2025.07.05 |