var 변수는 let, const보다 보안에 취약하고 side effect를 일으킴
따라서 let, const로 교체할 것을 권장함
var를 let, const로 교체하기 전 주의사항
1. var로 선언한 변수의 scope은 함수 scope이거나 전역 scope (Block Scope X)
Block 외부에서 Block 내부의 var 변수에 접근 가능, let, const는 Block Scope
for (var i = 0; i < 10; i++) {
// ...
}
alert(i); // 10
2. 재선언이 가능
let, const는 재선언시 Error 발생
var user = "Pete";
var user = "John"; // this "var" does nothing (already declared)
alert(user); // John
3. 선사용 후선언이 가능
var로 선언한 변수는 Hoisting되어 함수의 최상위로 끌어올려짐, let, const는 선언은 Hoisting이 되지만 값이 할당되지 않아(Temperal Dead Zone(TDZ)) Reference Error가 발생함
function sayHi() {
phrase = "Hello";
alert(phrase);
var phrase;
}
sayHi();
출처
https://ko.javascript.info/var
https://junhobaik.github.io/js-let-cont-hoisting/
'IT > Programming Language' 카테고리의 다른 글
Generic이란 (0) | 2022.03.06 |
---|---|
[Javascript] 비동기 처리 방식 (0) | 2022.02.20 |
[Javascript] closure (0) | 2022.02.20 |
[Javascript] ... 활용 (0) | 2022.02.19 |
[Javascript] Arrow Function vs Function (0) | 2021.10.31 |
댓글