接受函数及其参数的方法有问题
Trouble with method that takes in a function and its arguments
我在传递型时遇到问题。我相信我走在正确的轨道上,但并不完全了解如何检索所需的结果。
说明
编写一个接受函数和函数参数的方法,returns 调用另一个函数时,returns 使用提供的参数调用原始函数的结果。
给出的例子
给定一个函数 add
function add (a, b) {
return a + b;
}
可以让它变得懒惰:
var lazy_value = make_lazy(add, 2, 3);
该表达式目前不会被评估,但只有当您调用 lazy_value 时才会评估:
lazy_value() => 5
这是我半天的努力总结
var make_lazy = function () {
var innerFunction = null;
var array = [];
for (var i = 0; i < arguments.length; i++) {
if (typeof arguments[i] == 'function') {
innerFunction = arguments[i];
} else {
array.push(arguments[i]);
}
}
innerFunction.apply(innerFunction, array);
innerFunction();
};
我正在使用 arguments
和 apply()
,我觉得我很接近?但是我在测试结果中得到 TypeError: lazy_sum is not a function at Object.exports.runInThisContext
。感谢您提供任何帮助,尤其是了解正在发生的事情。谢谢
...
return function() {
return innerFunction.apply(this, array);
};
};
再次感谢大家。问题已解决。
我在传递型时遇到问题。我相信我走在正确的轨道上,但并不完全了解如何检索所需的结果。
说明
编写一个接受函数和函数参数的方法,returns 调用另一个函数时,returns 使用提供的参数调用原始函数的结果。
给出的例子
给定一个函数 add
function add (a, b) {
return a + b;
}
可以让它变得懒惰:
var lazy_value = make_lazy(add, 2, 3);
该表达式目前不会被评估,但只有当您调用 lazy_value 时才会评估:
lazy_value() => 5
这是我半天的努力总结
var make_lazy = function () {
var innerFunction = null;
var array = [];
for (var i = 0; i < arguments.length; i++) {
if (typeof arguments[i] == 'function') {
innerFunction = arguments[i];
} else {
array.push(arguments[i]);
}
}
innerFunction.apply(innerFunction, array);
innerFunction();
};
我正在使用 arguments
和 apply()
,我觉得我很接近?但是我在测试结果中得到 TypeError: lazy_sum is not a function at Object.exports.runInThisContext
。感谢您提供任何帮助,尤其是了解正在发生的事情。谢谢
...
return function() {
return innerFunction.apply(this, array);
};
};
再次感谢大家。问题已解决。