函数的内部属性————Arguments对象

一、基本点

  1. arguments是一个类数组对象,包含着传入函数中的所有参数。主要用途是保存函数参数,但这个对象还有一个名叫callee的属性
  2. argumentscallee属性是一个指针,指向拥有这个arguments对象的函数。
  3. 函数的内部属性 arguments的作用: 用于存储调用函数的时候传入的所有实参,
  4. arguments是一个类数组对象,他的元素个数取决于实参列表, 和形参无关;
  5. arguments.callee()表示所在函数的引用地址,表示调用函数本身。
function sum(){
    
    console.log(arguments); /*打印出Arguments数组对象,Arguments(3) [10, 30, 50, callee: ƒ, Symbol(Symbol.iterator): ƒ]*/
    let result=0;
    for(let i=0;i< arguments.length;i++){
        result+=arguments[i]
    }
    console.log(result) // 打印实参的相加结果,90
}
sum(10,30,50) /* 调用结果, 打印类数组arguments,arguments上有一个属性callee,是一个函数-  和90 */



function fn(num1,num2){
    arguments[1] = 10;
    console.log(arguments[0] + num2); 
}
fn(10,20);  /* 将实参列表中的第二个元素赋值为了 10,此时形参列表也会随之改变,即此时,num2也变为了10,故调用结果为 20  */

分析:

每次执行fn()这个函数,num2的值都会被修改为10 ,因为arguments对象中的值会自动反映到num2,但是,num2和arguments[1]的内存空间是不同的。
如果fn()只传入了一个参数,那么修改arguments[1]是没有任何效果的,因为arguments的长度已经被确定为1了,没有第二个参数。

function fn22(num1,num2){
    arguments[1]=10;
    console.log('num2:',num2); 
    console.log(arguments[0]+num2)
 }
fn22(10) /* 打印结果: num2: undefined   NaN  ;因为 此时num2的值为undefined, 10+undefined的结果为NAN*/

参考链接https://www.cnblogs.com/yingyingh5/p/7684984.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值