我知道JavaScript函数可以接受"任意"数量的参数.
function f(){};
f(1,2,3,4 /*...*/);
Run Code Online (Sandbox Code Playgroud)
但我想知道实际上有多少"任何"可以限制?
比如说,让我说一百万个参数f().那会有用吗?或者翻译龙骨?
我猜测最大值是(a)特定于实现或(b)(2^32)-1,因为arguments对象是类似数组的.
我没有在语言规范中看到这一点,但我可能没有连接一些点.
我只是浏览Sizzle的源代码,我遇到了这行代码:
array = Array.prototype.slice.call( array, 0 );
Run Code Online (Sandbox Code Playgroud)
我查看了函数是什么,但我得出的结论是,它只返回从索引0开始的数组的所有元素,并将整体放入数组中,即它根本不会做任何事情.
那么这行代码的用途是什么?我错过了什么?
编辑:这是来自https://github.com/jquery/sizzle/blob/master/sizzle.js#L863的第863行.
如何将多个且无限制的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)