有没有办法传递未知数量的参数,如:
var print_names = function(names) {
foreach(name in names) console.log(name); // something like this
}
print_names('foo', 'bar', 'baz');
Run Code Online (Sandbox Code Playgroud)
另外,如何获取传入的参数数量?
ShZ*_*ShZ 129
您可以通过魔术arguments
对象访问传递给任何javascript函数的参数,该对象的行为与数组类似.使用arguments
你的功能看起来像
var print_names = function() {
for (var i=0; i<arguments.length; i++) console.log(arguments[i]);
}
Run Code Online (Sandbox Code Playgroud)
需要注意的是很重要的arguments
是不是一个数组.MDC有一些很好的文档:https://developer.mozilla.org/en/Core_JavaScript_1.5_Guide/Functions#Using_the_arguments_object
如果你想打开arguments
到一个数组,这样就可以做这样的事情.slice()
,.push()
等等,使用这样的:
var args = Array.prototype.slice.call(arguments);
Run Code Online (Sandbox Code Playgroud)
还有更好的方法!新的休息参数功能有你的背:
var print_names = function(...names) {
for (let i=0; i<names.length; i++) console.log(names[i]);
}
Run Code Online (Sandbox Code Playgroud)
Rat*_*ica 16
利用rest参数语法.
function printNames(...names) {
console.log(`number of arguments: ${names.length}`);
for (var name of names) {
console.log(name);
}
}
printNames('foo', 'bar', 'baz');
Run Code Online (Sandbox Code Playgroud)
rest参数和arguments对象之间有三个主要区别:
pub*_*ide 11
var
print_names = function() {
console.log.apply( this, arguments );
};
print_names( 1, 2, 3, 4 );
Run Code Online (Sandbox Code Playgroud)
function print_args() {
for(var i=0; i<arguments.length; i++)
console.log(arguments[i])
}
Run Code Online (Sandbox Code Playgroud)
有一个隐藏的对象传递给JavaScript中的每个函数调用arguments
.
您只需使用arguments.length
获取传递给函数的参数量.
要遍历参数,您将使用循环:
for(var i = arguments.length; i--) {
var arg = arguments[i];
}
Run Code Online (Sandbox Code Playgroud)
请注意,这arguments
不是一个真正的数组,所以如果你需要它作为一个数组,你会像这样转换它:
var args = Array.prototype.slice.call(arguments);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
56268 次 |
最近记录: |