接受多组参数的JavaScript函数
JavaScript function that takes multiple sets of arguments
我将向函数传递多组参数,如下所示:
Myfunction(var1,var2)(var3,var4)(var5);
但我只知道如何获得第一套这样的agument:
function Myfunction() {
for (var i = 0; i < arguments.length; i++) {
alert(arguments[i]);
}
}
并返回var1, var2
我如何获得另一组aguments(var3,var4)(var5)等?
我的参考:函数的JavaScript变量数量
我不知道你认为这个代码在做什么:
Myfunction(var1,var2)(var3,var4)(var5)
但这是在调用三个函数。不是一个。为了说明你的论点在哪里可用:
function MyFunction() {
// var1 and var2 are available here, because they were passed to this function
return function() {
// var3 and var4 were passed to THIS function
return function() {
// var5 was passed to THIS function
}
}
}
无法访问MyFunction
中的var3
、var4
或var5
,因为它们未传递给该函数。它们被传递给所返回的函数。
如果要将所有这些参数传递给MyFunction
,请执行以下操作:
MyFunction(var1, var2, var3, var4, var5);
然后它们都可以使用:
function MyFunction() {
// var1, var2, var3, var4, and var5 are all available here
}
您想要的可能和一样简单
function myFunction(arg1, arg2, arg3, arg4, arg5) {
// use all your arguments here
}
如果你想有一对参数,你可以把数组作为参数发送,比如:myfunction([0, 1], [34, 21], [2,7])
要像您那样归档函数调用,您需要执行以下操作(见下文),但这完全是疯狂的。
function myFunction(arg1, arg2) {
return function(arg3, arg4) {
return function(arg5) {
}
}
}
您可以在JavaScript中为函数提供的参数数量实际上是无限的(规范中没有定义限制,但这个答案表明Chrome有65535的限制)。
函数的arity是在其定义中指定的参数数量。在JavaScript中,执行调用时可以安全地忽略函数的arity。你可以随意提出论据。
您可以获得与每个函数调用隐式关联的类似arguments
数组的对象中的所有参数,或者如果您使用的是ES2015,则可以使用spread运算符(如下所述)。
问题的第二个特征是,您正在将单个更大的操作扩展到多个调用中。这被称为咖喱,是一种更先进的技术。在JavaScript中,您可以利用闭包来实现它。
这个例子可能对您有所帮助:
function add(...args1) {
if(!args1.length) {
return sum(args1);
}
return (...args2) => {
if(!args2.length) {
return sum(args1.concat(args2));
}
return add.apply(null, args1.concat(args2));
};
}
function sum(arr) {
return arr.reduce((p,c) => p+c,0);
}
console.assert(add(1,2)(3)(4)() === 10, '1+2+3+4 should be 10');
相关文章:
- 创建一个类似链接的按钮,并通过Javascript函数打开一个新的弹出窗口
- 正在全局范围中查找JavaScript函数
- 如何将输入(type=text)从html表单传递到javascript函数
- 如何调用这个匿名 JavaScript 函数
- 通过Ajax将JavaScript函数传递给PHP文件
- 在javascript函数中设置全局变量
- 如何在执行此特定onclick事件时执行JavaScript函数
- 使用javascript函数在页面初始化后加载jquery
- javascript函数同步
- 如何将一个JavaScript函数回调为多个函数
- 在javascript函数中使用php变量
- 代码背后调用一个JavaScript函数的按钮点击-C#
- 将JavaScript函数与HTML分离
- 组合两个javascript函数
- 在 Java 中的 JavaScript 函数中插入 Wicket 值
- javascript函数内部的代码用逗号而不是分号分隔
- href属性内的javascript函数
- 使用html表单中的参数调用JavaScript函数
- 分析Javascript函数中的多个对象
- javascript函数的:和=之间的区别