일급함수란 앞에서 설명했듯이, 어떤 함수가 리턴값으로도 올 수 있고, 다른함수의 인자로 넘겨질 수도 있는 성질을 말한다.


그럼 함수 몸체 내에 있는 free variable의 바인딩을 결정하는 시점은 언제일까?

함수 선언 때? 실행 때?


다음 예를 보자.


var x = 10;
 
(function (funArg) {
 
  var x = 20;
  funArg(); // 10, not 20
 
})(function () { // create and pass a funarg
  console.log(x);
});


익명의 함수를 funArg 라는 이름의 인자로 넘겨주어 호출되도록 하였다.
funArg() 몸체 내에서 x 값을 출력하는데, 이 값은 20(실행시점)이 아니라 10(선언시점) 으로 결정된다.

즉, 자바스크립트에서 함수의 environment를 결정하는 시점은 함수 선언 때 이다.

+ Recent posts