记录今天所学到的argument的基本用法

每个函数都有个参数叫agruments,这个参数主要用于函数传参时会把参数复制到这个agruments里面,接受函数

function a(){
console.log(arguments)

}
a(1,2,3)

得到一个Arguments对象

里面包含了之前传入a函数的三个传参。所以说agurments主要用于存传入函数的变量。

那其实为什么不直接用而是要转弯拐角去这样做呢?

我觉得首先,也是最重要的一点:降低代码的耦合度

当代码越来越多的时候,可能改了什么地方就报错了,需要逐个逐个改,如果用Arguments就不存在这个问题

还要说下Argument还有一个比较常用的属性:callee.

Argument.callee主要是指向当前运行的函数,他是一个指针来的

function b(n){
  if(n<=0){
     return 1
    }else{
   return n+arguments.callee(n-1)
         }
       }

这在函数中使用arguments.callee(n-1)相当于b(n-1)。

那为什么要这样用?

function fun(num){
    if(num <= 1){ 
        return 1;
    }
    else{
        return num*fun(num-1);
    }
}
var ffun = fun;
fun= function(num){
    return 0;
};
 
console.log(ffun(3))

输出的结果却是0,为什么,因为在函数中引用了fun,当我们修改fun时则ffun中利用了fun方法,而fun返回0,所以我们一直返回0;解决的办法是把fun(num-1)变成arguments.callee(num-1),结果能够正常显示。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值