【问题标题】:javascript get arguments of invoked function?javascript获取调用函数的参数?
【发布时间】: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) 时,您希望 ab 获得什么值 - 您的代码中的任何地方都没有数字?
  • apply method 有两个必需参数
  • 我通过调用 myFunc(add(1,2)) 来更新帖子,所以假设 add 有两个数字作为参数
  • 在这种情况下,您不再将“方法”传递给myFunc,而只是传递数字3,这是调用add(1, 2) 的结果。你不再需要使用applyarguments,你只需要function myFunc(number) { console.log(number); } 就可以了
  • 您可以传递一个函数,然后用一些参数自己调用它,也可以传递函数调用的结果。你不能传递一个“被调用的函数”(这是什么,一个当前正在被调用的函数?)然后找出它被调用的参数。

标签: javascript ecmascript-6 arguments


【解决方案1】:

这真是一团糟,但我认为您正在寻找类似的东西

function add(a, b) {
    return a + b;
}

function myFunc(fn, args) {
    if (typeof args[0] !== 'number')
        throw new Error('first argument must be a number');
    return fn.apply(null, args);
}

console.log(myFunc(add, [1, 2]));
console.log(myFunc(add, [null]));

【讨论】:

    猜你喜欢
    • 2011-11-12
    • 2014-03-27
    • 2011-01-04
    • 1970-01-01
    • 1970-01-01
    • 2016-11-26
    • 1970-01-01
    • 1970-01-01
    • 2012-07-07
    相关资源
    最近更新 更多