关于argument一些小坑

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;

如果还有碰到面试题的坑可在下方交流改进,欢迎大家留言😀😁😂😃😄😅😆😉😊😋😎😍😘😗😙😚

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值