argument简介
对于argument,相信大家不会太陌生。它是一个类数组对象,是在function就自动创建的存放参数的类数组对象,英文名称为 object like array,是不是觉得这个名字取得特别随便,哈哈哈😂😂
function fun(name,age){
console.log(arguments);
}
fun('nn','12')
(打印arguments的结果)
可以明显看出 argument的类型是object,如果我们需要参数的数据可以通过arguments取出
console.log(arguments[1]);
console.log(arguments[2]);
argument变数组
虽然argument是一个伪数组但是可以通过一些方式成为真数组
//1.稍微复杂些
function test(){
var newarr = [].slice.call(arguments);
console.log(newarr);
}
test(45,44,555);
//2数组构造函数转变
function test2(){
var newarr = Array.from(arguments);
console.log(newarr);
}
test2(45,44,555);
(第一种方式)
(第二种方式)
argument一些坑
arguments映射分两种情况
1.实参>形参或者实参<形参的情况下
是不构成映射关系的,即使改变形参的值,对应的arguments[i]仍然是undefined。
function fun(name,age){
console.log(age);//undefined
console.log(arguments[1]);//undefined
arguments[1] = 2;
console.log(age);//undefined
console.log(arguments[1]);//2
}
fun('百里半')
2.只有实参数量==形参数量构成了映射关系,可以实现改动argument从而改变实参
var func = function(m, n) {
arguments[0] = 3;
arguments[1] = 2;
return m + n;
}
console.log(func(1, 1))//5;
如果还有碰到面试题的坑可在下方交流改进,欢迎大家留言😀😁😂😃😄😅😆😉😊😋😎😍😘😗😙😚