javascript - "callback is not the function"和 function.apply()

标签 javascript callback

为什么这根本行不通?

它说 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 的第一个参数是范围,而第二个是参数数组。看起来你有这个,但是 argsRun(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/

相关文章:

jquery - 将动态变量附加到ajax回调函数

java - 异步任务技术

javascript - 过滤掉 $.each 中现有的 json 属性

javascript - Typescript 过滤两个对象数组

Javascript onBlur 前缀负号

javascript - Node.js 和同步 API 函数

javascript - Undefined 不是 Jquery 脚本中的函数

ruby-on-rails - Rails 回调 : Use if more than once as conditional in a callback

ruby-on-rails - 用 before_add 关联回调静默跳过添加而不是引发异常?

javascript - 选中两个复选框时背景颜色如何变化