作为Java语言的初学者,我试图调用一个参数为函数的函数,但出现此错误。
function execute(f) {
f();
}
var m = function(x) { return x * x };
m(8) #=> returns 64
execute(m(8)) #=> Uncaught TypeError: number is not a function
我猜想函数execute
是m(8)
在行使其身体之前执行的,因此调用变为execute(64)
。如果是这样,我该如何传递带有参数的函数?
您必须将它们作为单独的参数传递,并使用call
或apply
。
例如 :
function execute(f, args) {
return f.apply(null, args);
}
var m = function(x) { return x * x };
m(8)
execute(m, [8])
现在,让我们假设您想要让函数接受任意数量的参数,并且不想打扰创建数组。然后,它变得更有趣了:
function execute() {
return arguments[0].apply(null, [].slice.call(arguments, 1));
}
var m = function(x,y) { return x * y };
console.log(m(8, 4))
console.log(execute(m, 8, 4))
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句