今天做一个面试题时遇到一个问题,如下:
函数 useArguments 可以接收 1 个及以上的参数。请实现函数 useArguments,返回所有调用参数相加后的结果。本题的测试参数全部为 Number 类型,不需考虑参数转换。
一开始我想?不会这么简单吧,就随便做了个函数相加的方法提上去了,谁知道提示错误,然后又仔细的审了审题,发现题目第一句话的意思原来是我理解错了,人家的意思是我不管输入几个参数都可以相加减,而不是直接写死的就写2个函数相加,也要三个相加,4个,5个。。。想通以后一时还真有点懵了,这是嘛意思。以前不都是传几个参数接几个,如果不写死参数漏掉了怎么办?后来在网上找了找才发现原来js函数有个内置对象arguments。
function useArguments() {
var sum=0;
for(var i in arguments){
alert(i);
sum = sum+arguments[i]
}
return sum;
}
console.log(useArguments(1,2,5))
如上,我命名的函数并没有接参数,但只要在函数中用到arguments这个函数,遍历出它就是调用时输入的所有参数了。