JavaScript Var Let 의 차이점

Theo·2024년 5월 2일

JavaScript

목록 보기
1/2
post-thumbnail

📋 Var

var age = 25;
age = 30;

📋 Let

let age = 25;
age = 30;

📌 위 두 코드는 같은거 같지만 다릅니다.

Var 와 Let의 차이점은 3가지 정도 있다고 한다.

  • 변수의 스코프 ( Scope )
  • 변수의 중복 선언 ( Variable redeclaration )
  • 변수의 호이스팅 ( Hoisting )

스코프란?

  • 스코프란 범위라는 뜻입니다.
  • 자바스크립트에서 범위란 코드가 변수에 접근할 수 있는 범위를 뜻함.
  • 스코프의 종류는 3가지 정도 있습니다.
  • Function Scope === Var로 선언 시
  • Block Scope === Let으로 선언 시
  • Global Scope === 전역 범위

코드로 보는 Function Scope

# 1
function main() {
var x = 'hi';
}

console.log(x);	// ReferenceError
				// 함수 스코프는 변수가 선언된 함수 내에서만 변수에 접근이 가능하다.
                
# 2
function main() {
	if (true) {
    	var x = 'hi';
    }
    console.log(x);
}

main();	// 실행되지 않아야할 hi가 출력됨
		// 그 이유는 var 키워드를 사용한 변수는 자동으로 함수 스코프를 가지고 있기 때문.
        
# 3
function main() {
	if (true) {
    	let x = 'hi';
    }
    console.log(x);
}

main();	// let으로 변경 시 참조 오류가 발생한다.

# 4
function main() {
	if (true) {
    	let x = 'hi';
        console.log(x);
    }
}

main();	// hi가 출력된다.
		// 그 이유는 let키워드는 사용시 변수가 사용된 내에서만 참조 가능하다.
        // 블록 스코프로 지정이 되어서다.
profile
Logbook

0개의 댓글