본문 바로가기
TIL/Javascript

JS-이벤트 루프, 호이스팅, 클로저

by 홍차23 2020. 12. 10.

1. 이벤트 루프

Call Stack

Heap

Queue

Event loop

 

2. Hoisting

var, 선언이 끌어올려짐.

let, const 사용을 권장하는 이유.

선언문 형태로 정의한 함수의 유효범위는 전체 코드의 맨 처음부터 시작하므로,

표현식 형태의 함수사용 권장.

 

3. Closure

외부함수에 의해 반환되는 내부함수.

  • 클로저 생성 조건
  1. 내부함수가 익명함수로 되어 외부함수 반환값으로 사용된다.

  2. 내부함수는 외부함수의 실행 환경에서 실행된다.

  3. 내부함수에서 사용되는 변수 x는 외부함수의 변수 스코프에 있다.

function outer(){
    var name = `closure`;
    function inner(){
        console.log(name);
    }
    inner();
}
outer();

var name = `Warning`;
function outer(){
    var name = `closure2`;
    return function inner(){
        console.log(name);
    };
}

//callFunc 를 클로저라고 한다.
var callFunc = outer();
callFunc();

//이처럼 외부함수 호출이 종료되더라도 외부함수의 지역변수 및 스코프 객체의 체인 관계를 유지할 수 있는 구조 = 클로저

 

 

 

댓글