我正在处理一个记录很少的javascript API,并且需要编写回调函数,其中参数尚未记录。作为一个开始步骤,我需要检查传入的内容。如果我知道只有一个输入,我可以将回调函数设置为
function( stuff ){
console.log(stuff);
}
从那里开始工作。当我不知道有多少输入时,是否有一种优雅的方式来检查输入?我可以做类似
的事情function(a,b,c,d,e,f){
console.log(a)
console.log(b) // is this undefined?
console.log(c) // how about now?
....
console.log(f) // if this isn't undefined I need to do it again with more args
}
它会很好用,但它很难看。是否有更简单的方法可以找出已将多少个参与者传递给函数?
答案 0 :(得分:6)
循环arguments
对象:
function f(){
for(var prop in arguments) {
console.log(arguments[prop]);
}
}
f(1); // logs 1
f(1, 2); // logs 1, then 2
由于arguments
是一个类似于数组的对象,您还可以根据其for
属性使用常规length
循环对其进行迭代:
for(var i=0; i<arguments.length; i++) {
console.log(arguments[i]);
}
答案 1 :(得分:3)
看起来你在arguments
之后,它为你提供了一个传递给当前函数的参数数组:
var f = function() {
console.log(arguments);
}
f(1, '2');
f(1, 2, 3, 4, 5);
(Fiddle)
答案 2 :(得分:1)
使用参数
function unknown() {
for (var i=0;i<arguments.length;i++) {
console.log('arg '+i+' : ',arguments[i]);
}
}
unknown(123, 'test', [1, 2, 3]);
arg 0 : 123
arg 1 : test
arg 2 : [1, 2, 3]