Javascript 如何返回需要2个参数和1个参数的函数
我相信我已经解决了这个问题,但是有一个问题,就是只向我的最终函数传递一个参数来返回结果。问题是Javascript 如何返回需要2个参数和1个参数的函数,javascript,call,apply,Javascript,Call,Apply,我相信我已经解决了这个问题,但是有一个问题,就是只向我的最终函数传递一个参数来返回结果。问题是 例如,考虑函数GETBUIN。当在值3上运行两次时,产生12,如下所示 getDouble(3) => 6 getDouble(6) => 12 让我们命名新函数createIterator,我们应该能够使用createIterator获得相同的结果,如下所示: var doubleIterator = createIterator(getDouble, 2); // This mean
例如,考虑函数GETBUIN。当在值3上运行两次时,产生12,如下所示
getDouble(3) => 6
getDouble(6) => 12
让我们命名新函数createIterator,我们应该能够使用createIterator获得相同的结果,如下所示:
var doubleIterator = createIterator(getDouble, 2); // This means, it runs *getDouble* twice
doubleIterator(3) => 12
为了简单起见,createIterator的所有函数输入都是返回少量的函数,迭代次数始终是整数
以下是我的答案:
function getDouble(num){
newNum = num * 2
return newNum
}
var createIterator = function (func, n) {
var results = [];
var result;
result = func;
results.push(func);
for(var i = 0;i < n - 1; i++){
results.push(results[i] * 2);
}
return results;
};
// var doubleIterator = createIterator(getDouble(3),2).slice(-1).pop();
您可以使用createIterator的以下定义:
函数createIterator(func,n){
返回函数(arg){
对于(变量i=0;i console.log(双迭代器(3));//=>12
您可以使用apply而不是call,因为apply将数组作为其参数多次调用可能不是一个好主意。。另外,您正在创建一个全局newNum
@PaulS.,您使用这个函数引用哪个函数?关于全局newNum——这是OP的代码。我现在已经删除了它。doubleIterator
;第一次调用将把n
带到-1
,以后的调用将循环到负无穷大dect,@PaulS.,谢谢你发现了这一点。更正。
function doubleIterator(d){
// var n;
// createIterator.call(this,n)
return createIterator(getDouble(d),n).slice(-1).pop();
}
console.log(doubleIterator);