-
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로 초기화되지 않는 것이다.
'자바스크립트' 카테고리의 다른 글
Section 11. 자바스크립트 옵셔널 체이닝 (0) 2023.04.07 Section 11. 자바스크립트 엄격 모드 (0) 2023.04.07 Section 11. 자바스크립트 에러 핸들링 (0) 2023.04.07 Section 10. 자바스크립트 제너레이터 (0) 2023.04.07 Section 10. 자바스크립트 이터러블 (0) 2023.04.07