2
알아 보았는 없다.부정 값 "F1은 ...."
지금은 test2와 test2의 올바른 결과 대신에 이 정의되지 않았 음이됩니다.
function f(x) {
console.log(x);
}
function delay(f, ms) {
return function() {
setTimeout(function(){
var delayed = f.apply(this, arguments);
return delayed;
}, ms);
}
}
var f1000 = delay(f, 1000);
var f1500 = delay(f, 1500);
f1000("test"); // must display "test"
f1500("test2"); // must display "test2"
! 그러나 저는 왜 우리가 타이머에 직접 인수를 푸시 할 수 없는지 이해하지 못합니까? [은'arguments' 객체가 로컬 변수이다] 때문이다 감사 –
(https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/arguments). 'setTimeout'에 전달 된 콜백 함수는 인자가 없기 때문에 undefined가됩니다. 바깥 쪽 범위'arguments'를 잡는 한 가지 방법은 클로저를 사용하는 것입니다 (예에서와 같이). 나는 이것을 설명하기 위해 나의 대답을 업데이트했다. –
설명 해 주셔서 감사합니다. 클로저 함수에서 더 많은 연습이 필요합니다 :) –