如何解决JavaScript“参数”-使用其他参数传递函数
| 下面的函数“ 0”传递了回调函数“ addOne”。函数乘法返回[3,5,7]。 由于回调函数addOne是函数乘法的参数之一,并且由于函数multiple的参数都乘以2,为什么回调函数本身(即addOne)不乘以2?换句话说,由于函数不是数字,所以我希望它不返回[3,7]
,而是返回[3,7,NAN]
。
JavaScript解释器是否以某种方式知道不将其乘以2?
function addOne(a) {
return a + 1;
}
function multiply(a,b,c,callback) {
var i,ar = [];
for (i = 0; i < 3; i++) {
ar[i] = callback(arguments[i] * 2);
}
return ar;
}
myarr = multiply(1,2,3,addOne);
myarr;
解决方法
因为循环的条件是
<3
(呵呵),这意味着它不会为回调(下一个元素)添加下标。
您应该考虑始终使回调成为第一个参数,并像这样拆分参数...
var argumentsArray = Array.prototype.slice.call(arguments),callback = argumentsArray.shift();
jsFiddle。
然后,callback
有您的回调,您可以用with7ѭ,apply()
或普通()
调用,而and10ѭ则将其余的参数作为适当的数组调用。
,line11ѭ这行保护着您。
在碰到callback
参数之前停下来
,因为您正在运行仅前三个参数的循环。 i <3运行时i = 0,i = 1,i = 2
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。