Language/JavaScript

[JS] 변수 선언

혬수 2024. 2. 26. 15:05

📍 변수 선언

자바스크립트는 느슨한 타입(loose typing)을 가진 언어이므로 데이터 타입을 따로 명시하지 않고 변수를 선언.

var, let, const 키워드를 통해 변수를 선언한다.

 

var

  • 재선언 O 
    : var로 선언된 변수는 기존에 선언된 변수의 값을 덮어쓴다.
var a = 1;

if(true){
	var a = 2;
}

console.log(a); // 2

 

  • 함수 스코프 
    : 변수를 선언한 함수 몸체 안에서만 해당 변수에 접근 가능.
function foo(){
	for(var i = 0 ; i<10 ; i++){
    	//...
    }
    console.log(i); // 10
}

foo();

 

❗️반복문의 변수 i를 반복문 밖에서 접근이 가능하다. 이러한 접근은 불필요하며 혼란을 초래❗️

 

  • 선언과 초기화 동시에   변수 호이스팅하면  undefined
console.log(a); // undefined
var a = 1;

 

 

let과 const

var의 문제점을 해결하기 위해 ES2015에서 등장

 

  • 재선언 X
let a = 1;
let a = 2; // SyntaxError: Identifier 'a' has already been declared

 

  • 블록 스코프
    : 변수를 둘러싼 블록{} 안에서만 해당 변수에 접근
{
    let a = 1;
}

console.log(a); // ReferenceError: a is not defined

 

  • 선언과 초기화 분리 ➔ 변수 호이스팅하면 Reference Error
console.log(a); // ReferenceError: Cannot access 'a' before initialization
let a = 1;

 

 

const는 let과 달리 변경을 허용하지 않는다. ➔ 상수처럼 변하지 않는 값 선언에 사용

let a = 1;
a = 2;

console.log(a); // 2

const b = 1;
b = 2; // TypeError: Assignment to constant variable.

 

 


 

❗️var의 문제점때문에 let과 const를 권장❗️