var과 let의 차이는 뭘까?
console.log(a)
var a = 1
console.log(a)
자바나 c, c++,등 다른 언어를 보면 알 수있듯
코드는 원래 top to bottom이라
1번라인에서 에러가나야 정상인데
자바스크립트는 ㅇ
에러없이 아래출력
undefined
1
자바스크립트는 실행시
인터프리터가 변수와 함수의 메모리 공간을 선언 전에 미리 할당하는 것을 의미한다
var 로 선언한 변수의 경우 호이스팅 시 undefined 로 변수를 초기화한다
console.log(a)
a = 1
var a
console.log(a)
이렇게해도 에러없이 아래출력
undefined
1
함수블럭내에서는??
var a = 2
function fun() {
var b = 1
}
console.log(b)
함수블럭 내에서는 에러가 남!
Uncaught ReferenceError: b is not defined
at <anonymous>:7:13
for블럭내에서는?
for(var i = 1; i<5; i++){
console.log(i)
}
console.log(i)
5까지 출력되어버림;;
1
2
3
4
5
그래서 var은 함수만 지역변수로 호이스팅이 되고
나머지는 다 전역변수로 호이스팅
또 var은
var a = 1
console.log(a)
var a = 2
console.log(a)
1
2
이것마져 허용한다
이렇게 var에 문제가 많았음
그래서 var을 없애고자 새로운 변수선언방식을 내놓음
그것이 바로 let
일반 자바랑 같은 정상적인 변수 방식이됨
변수선언 위쪽은
TDZ(Temporal Dead Zone)
반응형
'웹 개발 > 🌐 JavaScript' 카테고리의 다른 글
JavaScript | 함수,오브젝트,클래스,상속,래퍼객체 (0) | 2022.11.09 |
---|---|
JavaScript | history,navigator,dom,node,정규표현식 (1) | 2022.11.08 |
JavaScript | 화살표함수,객체,프로토타입,math,string,date,window,엘리먼트접근 (0) | 2022.11.07 |
JavaScript | 대화상자,제어문,반복문,배열,호이스팅 (0) | 2022.11.07 |
JavaScript | 출력,변수,상수,데이터 타입,타입변환 (0) | 2022.11.06 |