我是靠谱客的博主 内向唇膏,最近开发中收集的这篇文章主要介绍函数的内部属性————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

最后

以上就是内向唇膏为你收集整理的函数的内部属性————Arguments对象的全部内容,希望文章能够帮你解决函数的内部属性————Arguments对象所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(32)

评论列表共有 0 条评论

立即
投稿
返回
顶部