JS/JAVASCRIPT
자바스크립트 변수, 변수 선언 방식
ddururu
2025. 1. 24. 19:32
변수
변수는 어떤 값을 담아둘 수 있는 양동이.
변수는 var, let, const 키워드를 사용하여 선언한다.
변수 선언 방식
1. Var
ES5에서 변수를 선언할 수 있는 유일한 방법으로 한번 선언된 변수명에 데이터를 재할당, 동일한 변수명으로 재선언 가능
var a = 1;
var b = 5;
var z = a + b; // 6
coonsole.log("z출력값 : ",z);
var는 몇 가지 문제점을 가지고 있음.
- 중복선언 허용 : 의도하지 않은 변수 값 변경
- 변수 호이스팅 : 번수를 선언하기 전에 참조가 가능
var의 문제점을 보완하기 위해 ES6에서 let과 const도입
2. let
변수를 선언하고 재할당도 가능 언제든 값을 바꿀 수 있음
한번 선언된 변수명에 데이터를 재할당은 가능하지만 동일한 변수명으로 재선언 불가
동일한 변수명으로 재선언이 불가하기때문에 변수명이 동일해서 발생하는 문제를 방지할 수 있음
let a = 1;
let b = 5;
let c = a + b;
console.log("c출력값 : ", c);
let a = 8; //SyntaxError: Identifier 'a' has already been declared
a = 10;
b = 20;
c = a + b;
console.log("c출력값 : ",c);
변수 호이스팅이 발생하지 않음(let 키워드로 선언된 변수를 선언문 이전에 참조하면 참조에러(reference Error)발생)
console.log(hs);
var hs = "ddururu" //undefined
console.log(ddu);
ler ddu; //SyntaxError: Unexpected identifier 'ddu'
블록 레벨 스코프 (모든 코드 블록 내에서 선언된 변수는 코드 블록 안에서만 유효, 외부에서는 참조할 수 없음)
let a= "apple"; // 전역
{
let b = "bare"; // 지역
let c = "carrot"; // 지역
}
console.log(a); // apple
console.log(b); // ReferenceError: b is not defined
console.log(c); // ReferenceError: c is not defined
- 전역변수
블록 밖에서 선언을 한 어디서든 쓰일 수 있는 변수
- 지역변수
블록{} 안에서 선언된 변수, 블락안에서만 쓸 수 있음
3. Const
const : 변하지 않는 값 선언 시 사용함
변수를 선언하는 시점에 값을 할당하고, 값을 재할당하거나 동일한 변수명으로 재선언 불가
let과 마찬가지고 호이스팅이 발생되지 않으며, 블록 레벨스코프 지원
const PI = "3.14"; //절대값은 대문자
PI = 3.16 //Assignment to constant variable.
정리
|
재선언
|
재할당
|
변수의 스코프
|
변수호이스팅
|
var
|
O
|
O
|
함수레벨스코프
|
O
|
let
|
X
|
O
|
블록레벨스코프
|
X
|
const
|
X
|
X
|
블록레벨스코프
|
X
|
더보기
💡 여전히 var 선언이 가능하지만 문제점으로 오류가 발생할 수 있어 ES6를 사용한다면
let, const로 선언하는 것이 좋다.