【问题标题】:apply arguments to function将参数应用于函数
【发布时间】:2013-01-07 14:12:42
【问题描述】:

我想将表示为哈希的参数应用于函数。

比如我想调用这个函数:

myFunc = function(a,b,c) { return b }

类似的方式:

myFunc({a:1, b:2, c:3})

有没有办法在javascript中做到这一点?

【问题讨论】:

  • 为什么要用3个参数而不是1个对象参数,有意义吗?
  • 是的,这就是我现在正在做的事情。但我希望有更好的方法。
  • currying 通常适用于元组,而不是哈希。在哈希中,元素是无序的。
  • 你可以在函数内部使用 arguments 变量并对其进行迭代,当然它不像你的建议那么清楚,但它有效:)

标签: javascript higher-order-functions named-parameters


【解决方案1】:

一般来说,不可能将函数中的位置参数与对象中的键值对关联起来。

可以将函数配置为双向接受参数:

myFunc = function (objOrA, b, c) {
    var a = objOrA;
    if (objOrA.a || objOrA.b || objOrA.c) {
        a = objOrA.a;
        b || (b = objOrA.b);
        c || (c = objOrA.c);
    }
    return b;
};

但是,如果您可以控制函数定义,最简单的解决方案就是无论如何都需要一个对象作为唯一参数。

myFunc = function (options) {
    return options.b;
}

【讨论】:

    猜你喜欢
    • 2022-07-08
    • 2012-11-20
    • 2013-12-14
    • 2012-02-28
    • 1970-01-01
    • 1970-01-01
    • 2015-07-29
    • 2018-12-19
    • 2015-06-11
    相关资源
    最近更新 更多