1. var
var는 ES5부터 사용된 변수 선언 키워드입니다. 숫자, 문자열, 객체, 배열, 함수 등 다양한 타입을 자유롭게 선언할 수 있습니다.
예제
// 숫자 선언
var gInt = 42;
// 문자열 선언
var gString = 'Hello, World!';
// 객체 선언
var gObject = {
name: 'John',
age: 30
};
// 배열 선언
var gArray = [1, 2, 3, 4, 5];
// 함수 선언
var gFunction = function () {
console.log('This is a function');
};
var는 중복 선언이 가능하며, **호이스팅(Hoisting)**이 발생합니다. 예를 들어:
var x = 10;
function example() {
console.log(x); // undefined (호이스팅 발생)
var x = 20;
console.log(x); // 20
}
example();
호이스팅 때문에 변수 선언이 코드의 최상단으로 끌어올려지므로, 의도치 않은 결과가 나올 수 있습니다. 이로 인해 최신 코드에서는 let이나 const 사용이 권장됩니다.
2. let
let은 ES6에서 도입된 변수 선언 키워드입니다. var와 마찬가지로 동적 타입으로 변수를 선언할 수 있지만, 재선언이 불가능합니다. 또한 **블록 스코프(block scope)**를 따릅니다.
예제
let x = 10;
x = 20; // 재할당 가능
console.log(x); // 20
// 블록 스코프
if (true) {
let y = 30;
console.log(y); // 30
}
// console.log(y); // ReferenceError: y is not defined
let을 사용하면 중복 선언을 방지할 수 있어 코드를 더 안전하게 작성할 수 있습니다.
3. const
const 역시 ES6에서 도입된 키워드로, 주로 **상수(constant)**를 선언할 때 사용됩니다. 재할당이 불가능하며, 선언과 동시에 값을 할당해야 합니다. 하지만, 객체나 배열의 속성은 변경할 수 있습니다.
예제
const pi = 3.14;
// pi = 3.14159; // TypeError: Assignment to constant variable.
const obj = { name: 'Alice' };
obj.name = 'Bob'; // 가능 (객체 속성 변경)
console.log(obj.name); // Bob
const arr = [1, 2, 3];
arr.push(4); // 가능 (배열 요소 추가)
console.log(arr); // [1, 2, 3, 4]
또한, const는 분해 할당에서도 자주 사용됩니다.
분해 할당 예제
const person = { name: 'Charlie', age: 25 };
const { name, age } = person;
console.log(name); // Charlie
console.log(age); // 25
const numbers = [10, 20, 30];
const [first, second] = numbers;
console.log(first); // 10
console.log(second); // 20
4. 결론
- var: 중복 선언 가능, 호이스팅 발생. 최신 코드에서는 잘 사용되지 않음.
- let: 블록 스코프, 중복 선언 불가. 변수 재할당이 필요한 경우 적합.
- const: 상수 선언, 재할당 불가. 객체나 배열의 속성 변경은 가능.
최신 JavaScript 코딩에서는 가급적 **let**과 **const**를 사용하여 안정성과 가독성을 높이는 것이 좋습니다.
반응형
'개발 > Javascript' 카테고리의 다른 글
jQuery 1.12.x to jQuery 3.x Upgrade 주요 변경 사항 (0) | 2024.12.15 |
---|---|
jQuery 3.4.1 에서 jQuery 3.5.1로 업그레이드 가이드 (0) | 2022.08.01 |
jQuery 1.12.x to jQuery 3.x Upgrade 방법 (0) | 2022.02.08 |
Javascript Date compare (0) | 2022.01.25 |
Javascript C# String.Format 메서드와 동일한 기능 (0) | 2022.01.18 |
댓글