Javascript 绑定和应用返回不同的结果
有人能解释一下为什么我们使用bind而不是apply时不能正常工作吗 假设我有一个简单的函数:Javascript 绑定和应用返回不同的结果,javascript,Javascript,有人能解释一下为什么我们使用bind而不是apply时不能正常工作吗 假设我有一个简单的函数: function addFourNumbers(a,b,c,d){ return a+b+c+d; } 我尝试创建一个函数,稍后可以使用“this”的正确值调用上述函数,并且可以随时传递参数: function bind(fn, thisArg){ var outArg = [].slice.call(arguments, 2); return funct
function addFourNumbers(a,b,c,d){
return a+b+c+d;
}
我尝试创建一个函数,稍后可以使用“this”的正确值调用上述函数,并且可以随时传递参数:
function bind(fn, thisArg){
var outArg = [].slice.call(arguments, 2);
return function(){
var inArg = [].slice.call(arguments);
var allArg = outArg.concat(inArg);
return fn.apply(thisArg, allArg);
}
}
现在,当我调用以下命令时,它会起作用:
var t = bind(addFourNumbers,this,1)
t(2,3,4); //output 10
var t = bind(addFourNumbers,this,1,2)
t(3,4); //output 10
现在我很困惑,如果我改变申请绑定
function bind(fn, thisArg){
var outArg = [].slice.call(arguments, 2);
return function(){
var inArg = [].slice.call(arguments);
var allArg = outArg.concat(inArg);
return fn.bind(thisArg, allArg);
}
}
并尝试执行:
var t = bind(addFourNumbers,this,1,2)
t(3,4)(); //output 1,2,3,4undefinedundefinedundefined
有什么建议吗
感谢作为程序员提示的可能副本。向谷歌询问这个问题,或者只是阅读有关Apply和Bind的文档。你会更快得到你的答复。记住,在这里提问之前,你必须先做研究,以免浪费每个人的时间。