그라파나 2022. 10. 22. 14:41

실행 컨텍스트 
Execution context 우리가 작성한 코드가 실행되는 환경

환경정보가 담긴 객체

 

전역 컨텍스트 

window, scopehoisting, this, functionclosure 등등

 

함수 컨텍스트

함수가 실행될때 불러지는 컨텍스트

 

호이스팅

변수가 선언되기 전에 유효하다.

코드를 읽고나서 선언하기 전에 이미 전역이든 로컬이든 할당이 되어있다. 

console.log("hello");
debugger;
var a =5;
function aaa(){
  var a = 0;
  console.log("a?");
}
console.log(a);
aaa();

*변수는 정의부만, 함수는 전체가 호이스팅 된다.

 

 

스코프

실행하는 위치에서 바로보고 있는 곳, 유효범위

 

스코프 체인

실행하는 위치에서 없으면 상위 버전을 찾는 것

자신과 가장 가까운 변수 객체의 모든 스코프들을 스코프 체인이라고 할 수 있다.

 

클로저

클로저는 함수와 그 함수가 선언됐을 때의 렉시컬 환경(Lexical environment)과의 조합이다.

 = 함수 + 렉시컬 스코핑

스코프는 함수를 호출할 때가 아니라 함수를 어디에 선언하였는지에 따라 결정된다. 
이를 렉시컬 스코핑(Lexical scoping)라 한다. 

 

렉시컬 스코핑 ?

스코프 체인이 바인딩한 객체가 렉시컬 스코프

 

정리

클로저 = 함수 + 스코프 체인이 된 객체들

 

매개변수?

function a(){
   var a = arguments.callee 
   var b = arguments.length;
   var c = arguments
   console.log(a);
   console.log(b);
   console.log(c);
}

 

 

console.dir() -> 개발자 도구 확인

예제

function sandwichMaker() {
    var ingredient = "peanut butter";
    function make(argument) {
        return ingredient + " and " + argument;
    }
    return make;
}
var f = sandwichMaker();
f("cream"); // "peanut butter and cream"

https://catsbi.oopy.io/fffa6930-ca30-4f7e-88b6-28011fde5867