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로 선언하는 것이 좋다.