티스토리 뷰

Tip and Error/Javascript

var를 권장하지 않는 이유(Hoisting)

geonwoopaeng@gmail.com 2022. 3. 20. 21:06

Hoisting

  • 함수 내에 있는 선언들을 모두 끌어올려 사용
  • var 변수 선언, 함수 선언문만 해당

 

설명

기본적인 Hoisting

  • 선언 부분만 맨 위로 올라가서 수행됩니다.
//hoisting
//var b; undefined로 3은 hoisting 되지 않는다.
//function a(){ console.log('a');};

a();
function a() {
    console.log('a');
};

console.log(b);
var b = 3;

 

함수 Hoisting 주의

  • 1. 함수 표현식은 Hoisting 안된다.
  • 2. 함수와 변수 선언문 중에 함수 선언문이 먼저다.
//1.
fun();
var fun = function() {};

//2. 
fun();
var fun = function(){}; //second
function fun() {}; //first

 

var 사용 금지 이유

var을 사용하면 선언문만 Hoisting되고 varfunction 단위의 scope를 가지기(let/const block scope) 때문에 코드가 이상한 값을 참조하고 더러워 질 수 있어 사용을 안하는 것 같다.

 

 

 

Ref

https://github.com/getify/You-Dont-Know-JS/blob/2nd-ed/scope-closures/ch5.md

반응형
공지사항
최근에 올라온 글