为什么这根本行不通?
它说 typeof(callback) = undefined。
function A(a,callback)
{
document.write(typeof(callback));
callback();
return a;
}
function Run(func,args)
{
return func.apply(this||window, args || [
function () { document.write("blah")}
]);
}
Run(A,[1]);
但是,在不使用 function.apply 的情况下它可以正常工作:
function Run2(func,arg)
{
return func(arg,
function () { document.write("blah")}
);
}
Run2(A,1);
请耐心等待,我是 JS 新手。
最佳答案
apply 的第一个参数是范围,而第二个是参数数组。看起来你有这个,但是 args
和 Run(A,[1]);
只是一个参数 (1),它将与 a 对齐
参数,但是您缺少该函数。另一方面,如果未设置 args
,您将选择创建一个带有单个参数 [ function ()... ]
的数组,这将再次将与 a
对齐。
从表面上看,您正在尝试合并/连接两个数组,而实际上 ||
用作比较运算符,或者更确切地说是 or
作业。
试试这个:
func.apply(this||window,args.concat([function () { document.write("blah")}]));
或
args.push(function () { document.write("blah")});
func.apply(this||window,args);
关于javascript - "callback is not the function"和 function.apply(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19670494/