Javascript 如何使用函数作为参数调用函数?
作为Javascript的初学者,我试图调用一个参数为函数的函数,但我遇到了这个错误Javascript 如何使用函数作为参数调用函数?,javascript,Javascript,作为Javascript的初学者,我试图调用一个参数为函数的函数,但我遇到了这个错误 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 我
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)
。如果是这样,我该如何传递带有参数的函数?您必须将它们作为单独的参数传递,并使用or
例如:
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))
您必须将它们作为单独的参数传递,并使用or 例如:
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))
您可以使用将8部分应用于m:
function execute(f) {
f();
}
var m = function(x) { return x * x };
execute(m.bind(null, 8))
您可以使用将8部分应用于m:
function execute(f) {
f();
}
var m = function(x) { return x * x };
execute(m.bind(null, 8))