Arguments对象只能在函数体中使用。虽然你可以像数组一样索引Arguments对象,但它不是数组。除了长度,它没有任何数组属性。
// function arguments length 5
function properties(a,b,c,d,e){
var function_name= arguments.callee.name
var arguments_length= arguments.length;
var properties_length= properties.length;
var function_from= properties.caller.name;
console.log('I am the function name: '+ function_name);
console.log('I am the function length, I am function spacific: '+ properties_length);
console.log('I am the arguments length, I am context/excution spacific: '+ arguments_length);
console.log('I am being called From: '+ function_from );
}
// arguments 3
function parent(){
properties(1,2,3);
}
//arguments length 3 because execution spacific
parent();
虽然它可以像数组一样被索引,就像你在这个例子中看到的:
函数添加(){
var和= 0;
(var = 0;我< arguments.length; + +) {
Sum = Sum +参数[i];
}
返回总和;
}
console.log(添加(1、2、3);
然而,Arguments对象不是一个数组,除了长度之外没有任何其他属性。
您可以将arguments对象转换为一个数组,然后可以访问arguments对象。
有很多方法可以访问函数体中的arguments对象,包括:
你可以调用array . prototype .slice.call方法。
Array.prototype.slice.call(参数)
function giveMeArgs(arg1,arg2){
var args = Array.prototype.slice.call(arguments);
返回参数
}
console.log( giveMeArgs(1,2));
你可以使用数组文字
[] .slice.call(参数)。
function giveMeArgs (arg1, arg2)可不,
var args = [].slice.call(参数);
return args;
出于美观
console.log(givemeargs(1,2))
你可以使用Rest…
函数给出MeArgs(...参数){
返回参数;
}
console.log(giveMeArgs(1,2))
你可以用spread[…]
function giveMeArgs()可不,
var args=[…参数];
return args;
出于美观
console.log (giveMeArgs (1,2));
你可以使用Array.from()
函数giveMeArgs () (
瓦尔·阿格斯=阵列。
重返args;
)
游戏机。log (giveMeArgs (1,2));