본문 바로가기
IT/Programming Language

[Javascript] var -> let, const

by FreeYourMind 2022. 2. 19.

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

댓글