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

Mus*_*sar 4 javascript jquery

如何将多个且无限制的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");
Run Code Online (Sandbox Code Playgroud)

Aru*_*hny 12

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

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");
Run Code Online (Sandbox Code Playgroud)

演示:小提琴


Fel*_*ing 6

更多未来的答案:

ECMAScript 6专门为其引入了一个新的参数语法,即"rest"参数.rest参数必须以三个点(...)开头,并且必须是列表中的最后一个参数.

例:

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

    for(var i = 0; i < args.length; i++) {
        alert(args[i]);
    }
}
Run Code Online (Sandbox Code Playgroud)

演示(仅限FF15 +)


到目前为止,只有Firefox 15+支持它.

  • 当所有浏览器都支持它时,这将非常有用.此功能将使许多代码更具可读性.谢谢你把它作为答案:) (2认同)