[英]How argument is being passed in the function(which itself is an argument) in JavaScript
[英]How do you apply an arbitrary numbers of arguments passed to function which is argument of another function in JavaScript?
您如何將無限數量的參數應用於另一個函數的參數?
這是我嘗試的:
var callIt = function(fn) {
for(var i = 1; arguments.length + 1; i++){
return fn(arguments[i]);
}
};
練習中有一個函數用於傳達所要求的內容:
callIt(sumAll, 1);
也許我喝了太多啤酒...
callIt(sumAll, 2,3) // 5 is expected but I got 2
將參數設置為數組 ,刪除第一個元素,然后使用apply
。
var callIt = function(fn) {
var args = [].slice.call(arguments);
return fn.apply(null, args.slice(1));
}
或使用您的代碼進行工作:
var callIt = function(fn) {
var args = [];
for(var i = 1; i < arguments.length; i++){
args.push(arguments[i]);
}
return fn.apply(null, args);
};
function show()
{
var args = Array.prototype.slice.call(arguments,1);
arguments[0](args);
}
callIt(sumAll, 2,3) // 5 is expected but I got 2
第一次迭代時, for
循環中的Question return
s中的javascript
。 另外, for
循環沒有返回false
的condition
。 您可以利用rest parameter
將函數參數與傳遞給callIt
rest parameter
分開
var callIt = function(fn, ...args) { var res = 0; for(var i = 0; i < args.length; i++){ res += fn(args[i]); } return res }; var result = callIt(function(n) { return n }, 2,3); console.log(result);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.