未定义值而不是函数中的参数 "f1...."
Undefined value instead of the arguments in the function "f1...."
无法理解为什么函数的参数 f1000 和
f1500 没有传递给包装函数 delay。
现在我得到 undefined 而不是 test 和 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
。
你得到 undefined
因为 the arguments object is a local variable.
传递给 setTimeout
的回调函数没有参数,因此你得到 undefined
.
您可以关闭 (closure) 来自外部范围的 arguments
并将它们继续传递:
function f(x) {
console.log(x);
}
function delay(f, ms) {
return function() {
var args = arguments;
setTimeout(function() {
var delayed = f.apply(this, args);
return delayed;
}, ms);
}
}
var f1000 = delay(f, 1000);
var f1500 = delay(f, 1500);
f1000("test"); //
f1500("test2"); //
无法理解为什么函数的参数 f1000 和 f1500 没有传递给包装函数 delay。
现在我得到 undefined 而不是 test 和 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
。
你得到 undefined
因为 the arguments object is a local variable.
传递给 setTimeout
的回调函数没有参数,因此你得到 undefined
.
您可以关闭 (closure) 来自外部范围的 arguments
并将它们继续传递:
function f(x) {
console.log(x);
}
function delay(f, ms) {
return function() {
var args = arguments;
setTimeout(function() {
var delayed = f.apply(this, args);
return delayed;
}, ms);
}
}
var f1000 = delay(f, 1000);
var f1500 = delay(f, 1500);
f1000("test"); //
f1500("test2"); //