javascript - 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
解决方案
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])
[] 是一个数组,其中的所有内容,用逗号分隔,是数组中的一项。数组中只能有相同的数据类型。在定义函数的 () 中,您应该定义在调用函数时要获取的数据。
如果你想快速测试它,复制粘贴到浏览器的开发者控制台中,然后调用该函数
推荐阅读
- java - 在位置按钮上的edittext中获取并显示用户位置邮政编码点击就像在只是吃应用程序中一样
- sql - SQL Server 子分区
- c# - WCF 何时从 app.config 加载值?
- android - Android Room - 将@Entity 拆分为 Key 和 DataObject
- python - 引发错误后有什么方法可以自动运行脚本
- html - 如何在搜索栏旁边对齐图像
- typescript - 如何从类型初始化 BehaviorSubject?
- postgresql - pg_ctl促进不快速暂停复制
- javascript - 如何将字符串附加到会话存储密钥?
- sql - SQL Server检查值是否在下一行重复