이가 "대답은"아니다, 그러나 희망이 문제를 보는 다른 방법을 보여줍니다 다음과 같이
그래서 코드도 작성할 수 있습니다.
우선은 자바 스크립트 기능이 단지 객체 따라서 변수에 바인딩 할 수 단지 값 참고. 이와 같이,
$('div').click((function() {
var number = 0;
return function() {
alert(++number);
};
})());
는 그 (이 명확해야 하나 개 이상의 간단한 식 교체
var g = f()
$('div').click(g);
을 후
이어서
var f = function() {
var number = 0;
return function() {
alert(++number);
};
};
// $('div').click((f)()); and when removing extra parenthesis ->
$('div').click(f());
같이 다시 간단한 식 교체로 될 수 outer) 함수 f
이 먼저 호출되며 결과 (내부 함수) 값인 g
이 처리기로 사용됩니다.
변수를 소개하는 것 외에도 위의 대체 코드는 의미 상으로 원래 코드와 같습니다. 것 유사한 의미를 유지
$('div').click((function makeIncrementer() {
var number = 0;
return function incrementAndAlert() {
alert(++number);
};
})());
더 자세한 코드 :
div를 클릭해도 함수가 호출되지 않습니다. 이 함수는 즉시 호출됩니다. IIFE를보세요. –
그래서'number'는 내부 함수가 접근 할 수있는 외부 함수의 영역에 있습니다. 클릭 할 때마다 내부 함수가 호출됩니다 ("반환 값"). 반면에 외부 함수는 즉시 호출됩니다. 그 맞습니까? – Heisenberg