【问题标题】:How to pass unlimited arguments and one or two parameters to a JavaScript function? [duplicate]如何将无限参数和一个或两个参数传递给 JavaScript 函数? [复制]
【发布时间】: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");

【问题讨论】:

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

标签: javascript jquery


【解决方案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

    【讨论】:

    • 当所有浏览器都支持它时,这将很有用。此功能将使大量代码更具可读性。感谢您将其作为答案:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-11-21
    • 2019-03-05
    • 2020-05-01
    • 1970-01-01
    • 2019-10-09
    • 2012-04-18
    • 2011-07-09
    相关资源
    最近更新 更多