자바스크립트
Section 11. 자바스크립트 var
포칼이
2023. 4. 7. 14:53
var는 let과 const가 생기기 전 변수 선언에 사용되던 문이다.
각종 문제점들을 갖고 있어서 오늘날네는 사용하지 않을 것을 권장한다.
1. 선언 없이도 사용이 가능하다.
notDeclared = 1; // 미리 선언한 부분이 없을 시 var로 만들어짐
console.log(notDeclared); //1
// num이 var로 선언된 것
for (num of [1, 2, 3]) {
console.log(num);
}
//1
//2
//3
2. 재선언이 가능하다.
그래서 코딩 중 실수의 여지가 된다.
let a = 1;
let a = 2; // ⚠️ 오류
const b = 1;
const b = 2; // ⚠️ 오류
var c = 1;
var c = 2;
3. 블록 레벨 스코프를 무시한다.
let num1 = 1;
{
let num1 = 2;
{
let num1 = 3;
}
}
console.log(num1); //1
var num2 = 1;
{
var num2 = 2;
{
var num2 = 3;
}
}
console.log(num2); //3
for문의 스코프도 무시한다.
// for문의 스코프도 무시
for (var i = 0; i < 5; i++) {
var pow2 = i ** 2;
console.log(pow2);
}
console.log(i, pow2);
//0
//1
//4
//9
//16
//5 16
함수의 스코프는 유효하다.
4. 호이스팅
console.log(hoisted1); // ⚠️ 오류
console.log(hoisted1); // 💡 오류발생 X, 대신 undefined 반환
var hoisted1 = 'Hello';
console.log(hoisted1) //Hello
console.log(hoisted2); // ⚠️ 오류
let hoisted2 = 'Hello';
console.log(hoisted2)
let일 경우를 살펴보자면 엄연히는 let도 호이스팅이 되지만 undefined로 초기화되지 않는 것이다.