【发布时间】:2019-02-19 02:41:07
【问题描述】:
我想在这段 javascript 代码中获取被调用函数(方法)的参数:
function add(a, b) {
return a + b;
}
function myFunc(method) {
// I'm trying to get method arguments in next line
if (method.apply(null, arguments[0]) !== 'number') // it shows here: method.apply is not a function
throw new Error('argument 1 must be a number');
return method;
}
console.log(myFunc(add(1, 2)));
如您所见,myFunc 有一个函数作为参数,我想获取这个调用的函数参数。这是我的尝试:
method.apply(null,arguments) // method.apply is not a function
或
method.arguments // undefined
我惰性得到的是 [a,b] 参数,以便对它们进行一些验证,但我得到的是 Nan。
【问题讨论】:
-
在调用
myFunc(add)时,您希望a和b获得什么值 - 您的代码中的任何地方都没有数字? -
applymethod 有两个必需参数 -
我通过调用 myFunc(add(1,2)) 来更新帖子,所以假设 add 有两个数字作为参数
-
在这种情况下,您不再将“方法”传递给
myFunc,而只是传递数字3,这是调用add(1, 2)的结果。你不再需要使用apply或arguments,你只需要function myFunc(number) { console.log(number); }就可以了 -
您可以传递一个函数,然后用一些参数自己调用它,也可以传递函数调用的结果。你不能传递一个“被调用的函数”(这是什么,一个当前正在被调用的函数?)然后找出它被调用的参数。
标签: javascript ecmascript-6 arguments