본문 바로가기

JavaScript

[javascript] 클로져를 이용한 partial 예제



자바스크립트 닌자비급 책에 나오는 예제...
var delay = setTimeout.partial(undefined, 3000); 구문이 실행되면
fn에는 setTimeout이, args에는 [undefiend, 3000]이 할당된다.

이후 delay(function() { console.log('1111'); }); 구문이 실행되면..
args는 클로져로 저장된 이전의 [undefiend, 3000]가
arguments에는 이후 실행된 "function() { console.log('1111'); }"이 넘어온다.

for-if에 의해서 args의 undefined가 function으로 대체되면서
결국 fn.apply(this, args);는

setTimeout.apply(window, function() { console.log('1111'); }); 과 같은 효과..