如何将无限参数和一个或两个参数传递给 JavaScript 函数? [复制]

Posted

技术标签:

【中文标题】如何将无限参数和一个或两个参数传递给 JavaScript 函数? [复制]【英文标题】:How to pass unlimited arguments and one or two parameters to a JavaScript function? [duplicate] 【发布时间】:2014-03-21 04:37:19 【问题描述】:

如何将多个无限arguments 和一个或两个参数传递给一个函数?

例子:

function myFunction(_id, _class, arg1, arg2, arg3, arg4, etc...)
    console.log($(_id).html());
    console.log($(_class).html());

    for(var i = 0; i < args.length; i++) 
        alert(args[i]);
    


myFunction("#myDiv",".mySpan", "Hello World!", "Bonjour le monde!", "Hola mundo!", "Ciao mondo", "Hallo Welt!", "etc");

【问题讨论】:

和Unlimited arguments in a javascript function 不是重复的,我的问题不同。我想在 jQuery/JavaScript 函数中传递“参数”+ 参数。 鉴于 ES6 为此引入了新的参数语法这一事实,我收回了我的赞成票。我认为你应该编辑标题,以更好地反映问题。 我改了标题。谢谢! 【参考方案1】:

您可以使用arguments object。它是一个类似数组的对象,对应于传递给函数的参数。

function myFunction(_id, _class)
    console.log($(_id).html());
    console.log($(_class).html());

    for(var i = 2; i < arguments.length; i++) 
        alert(arguments[i]);
    


myFunction("#myDiv",".mySpan", "Hello World!", "Bonjour le monde!", "Hola mundo!", "Ciao mondo", "Hallo Welt!", "etc");

演示:Fiddle

【讨论】:

【参考方案2】:

更多未来答案:

ECMAScript 6 专门为此引入了一种新的参数语法,the "rest" parameter。其余参数前面必须有三个点 (...),并且必须是列表中的最后一个参数。

例子:

function myFunction(_id, _class, ...args)
    console.log($(_id).html());
    console.log($(_class).html());

    for(var i = 0; i < args.length; i++) 
        alert(args[i]);
    

DEMO(仅限FF15+)


到目前为止,only Firefox 15+ supports it。

【讨论】:

当所有浏览器都支持它时,这将很有用。此功能将使大量代码更具可读性。感谢您将其作为答案:)

以上是关于如何将无限参数和一个或两个参数传递给 JavaScript 函数? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

如何将两个参数传递给 Pool.starmap()?

Laravel 5.8:如何将两个参数传递给 Event 和 Listener

如何将两个参数传递给百里香模板?

如何将两个参数传递给下一个 ViewController?

如何将两个参数传递给 Javascript/NodeJS 中的 API“获取”请求

如何将两个参数传递给来自 IBM Bluemix 的 Node-Red 的 dashDB 查询元素