首页 > 解决方案 > Javascript 函数 - 你能给出这样的参数吗?

问题描述

谁能弄清楚这可能意味着什么?

下面的代码是对所有参数求和,我调用了像'addTogether(2)(3)'这样的函数,然后它可以工作......?

就我的理解而言,调用函数应该类似于“addTogether(2, 3)”。将所有参数放在一对括号中而不是两对括号中??

谁能解释它为什么起作用以及它是如何起作用的?

我做了 console.log 来解决这个问题,如果我 console.log(arguments) 结果将是 { '0': 2 }

function addTogether() {
  console.log(arguments) // result { '0': 2 }
  var args = Array.from(arguments);
  console.log(args) //result [2]
  
  return args.some(n => typeof n !== "number")
    ? undefined
    : args.length > 1
    ? args.reduce((acc, n) => (acc += n), 0)
    : n => (typeof n === "number" ? n + args[0] : undefined);
}

// test here
console.log(addTogether(2)(3)); // result 5

标签: javascriptfunctionarguments

解决方案


function addTogether(args) { 
  console.log(args)
  
  return args.some(n => typeof n !== "number")
    ? undefined
    : args.length > 1
    ? args.reduce((acc, n) => (acc += n), 0)
    : n => (typeof n === "number" ? n + args[0] : undefined);
}

然后像这样称呼它addTogether([1, 2])

[] 是一个数组,其中的所有内容,用逗号分隔,是数组中的一项。数组中只能有相同的数据类型。在定义函数的 () 中,您应该定义在调用函数时要获取的数据。

如果你想快速测试它,复制粘贴到浏览器的开发者控制台中,然后调用该函数


推荐阅读