Arguments(函数参数对象)

arguments[ ] 函数参数的数组
Arguments 一个函数的参数和其他属性
Arguments.callee 当前正在运行的函数
Arguments.length 传递给函数的参数的个数

Arguments对象只在函数体中定义。

arguments
arguments[n]

虽然技术上说来,它不是数组,但Arguments对象有带编号的属性,这些属性可以作为数组元素,而且它有length属性,该属性声明了数组元素的个数。它的元素是作为参数传递给函数的值。元素0是第—个参数,元素1是第二个参数,以此类推。所有作为参数传递的值都会成为Arguments对象的数组元素,无论函数声明中是否有这些参数的名字。

arguments[]数组只在函数体内定义。

function functionname(argument_name_list) // 函数定义语句
{body
}
function (argument_name_list) { body } // 未命名的函数直接量,JavaScript 1.2引入
functionname(argument_value_list)      // 函数调用

argument_names...

任意多个字符串参数,每个字符串命名一个或多个要创建的Function对象的参数。

arguments.callee

属性arguments.callee引用当前正在运行的函数。它给未命名的函数提供了一种自我引用的方式。该属性只在函数体内被定义。

//一个未命名的函数直接量使用callee属性引用它自身
// 以便它能够递归var factorial = function(x) {if (x < 2) return 1;
else return x * arguments.callee(x-1);
}
var y = factorial(5);  // 返回 120
arguments.length

Arguments对象的属性length声明了传递给当前函数的参数的个数。该属性只在函数体内被定义。

注意:这个属性声明的是实际传递给函数的参数个数,而不是期望传递的参数个数。还要注意该属性不具备Array.length属性的专有行为。

// 使用Arguments对象来检查是否正确传递了#参数function check(args) {var actual = args.length;           //参数的实际个数var expected = args.callee.length;  //期望的参数个数if (actual != expected) {           //如果他们不匹配,则抛出异常throw new Error("Wrong number of arguments: expected: " +expected + "; actually passed " + actual);}
}
//一个演示如何使用以上函数的函数
function f(x, y, z) {check(arguments);  // 检查参数个数是否正确return x + y + z;  // 继续使用函数
}

Arguments(函数参数对象)的属性和使用相关推荐

  1. JS-面向对象-函数的使用场景---作为其他变量的值 / 作为对象的属性值 / 作为其他函数的参数 / 作为其他函数的返回值 / 作为构造函数(定义对象)

    作为其他变量的值 <!DOCTYPE html> <html lang="zh"><head><meta charset="UT ...

  2. FPGA之道(25)VHDL数据类型转换函数与数据对象的属性

    文章目录 数据类型转换函数 数据对象的属性 数值类属性 Signal属性 数据类型转换函数 在VHDL的众多数据类型中,归根到底,它们都是要用二进制数来表示的,所以它们之间几乎都是可以相互转换的.在有 ...

  3. C++_向函数传递对象

    向函数传递对象 1. 使用对象作为函数参数 对象可以作为参数传递给函数,其方法与传递其他类型的数据相同. 在向函数传递对象时,是通过传值调用传递给函数的. 因此,函数中对对象的任何修改均不影响调用该函 ...

  4. JavaScript函数之实际参数对象(arguments) / callee属性 / caller属性 / 递归调用 / 获取函数名称的方法...

    函数的作用域:调用对象 JavaScript中函数的主体是在局部作用域中执行的,该作用域不同于全局作用域.这个新的作用域是通过将调用对象添加到作用域链的头部而创建的(没怎么理解这句话,有理解的亲可以留 ...

  5. 7.1.3 Python进阶 《函数》定义、调用,参数,返回值《面向对象》概念,类,实例,对象,属性,方法《模块、包》导入,自定义,常用内置:datatime,time,random,os,sys

    目录 ======== 第四部分 Python进阶 ======== 第一节 函数 4.1.1 函数定义及调用 4.1.2 函数的参数 4.1.3 函数的返回值 第二节 面向对象 4.2.1 面向对象 ...

  6. [读码时间] css函数设置读取对象的属性

    说明:代码取自网络,注释为笔者学习时添加! <!DOCTYPE html> <html> <head><meta charset="utf-8&qu ...

  7. JavaScript服务器端开发(函数实参对象arguments使用的几个注意事项)

    为什么引入实参对象arguments 在JS开发中,每一个函数都对应一个实参对象,称为arguments.这个对象引用的目的是为了解决如下问题: 当调用函数的时候传入的实参个数超过函数定义时的形参个数 ...

  8. js中函数参数arguments、callee、caller,值传递、重载

    全栈工程师开发手册 (作者:栾鹏) js系列教程4-函数.函数参数教程全解 函数参数 arguments javascript中的函数定义并未指定函数形参的类型,函数调用也未对传入的实参值做任何类型检 ...

  9. ES6-ES11-第一部分-let、const、解构赋值、模板字符串、简化对象写法、箭头函数、函数参数默认值、rest 参数、扩展运算符、Symbol、迭代器、生成器、Promise、Set、Map

    根据视频进行整理 [https://www.bilibili.com/video/BV1uK411H7on?p=1] 视频资源(百度网盘): 链接:[https://pan.baidu.com/s/1 ...

最新文章

  1. dw8与mysql的连接,VS2019连接mysql8.0数据库的教程图文详解
  2. python爬虫从基础到实战-2019-08-05 《python爬虫开发:从入门到实战》
  3. 四种ASP网页跳转代码
  4. win7系统字体模糊发虚不清晰的解决方法
  5. android 百叶窗动画,android 幻灯片效果之百叶窗
  6. php中的echo单引号_PHP 邮件漏洞小结
  7. 手机自动签到简易应用
  8. android widget的中文文档
  9. SAP中会计凭证红蓝冲相关分析测试笔记
  10. “梦中行千里不如现实行一步。”创业亦是如此丨国仁网络资讯
  11. 云班课计算机第二阶段测试卷,云班课测试自动答案
  12. 26岁从财务转行软件测试,4年沉淀我已经是25k的测开工程师...
  13. 深度长文:AMD的崛起、衰落与复兴
  14. 跨时钟域同步-结绳法
  15. ajax提交到action乱码问题
  16. Android Studio2.2 CMAKE高效NDK开发
  17. HTML网页设计-梅西专属
  18. 【老生谈算法】matlab实现Kmeans聚类算法源码——Kmeans聚类算法
  19. Python 水果出库
  20. MYSQL的索引主要作用是什么

热门文章

  1. 旋转 翻转_自组装的立方体机器人会跳、旋转、翻转和相互识别
  2. 联想台式计算机功率,【联想台式机】联想扬天6100台式机改装nas主机,联想台式机怎么进入bios_什么值得买...
  3. 浅析uc/os_II设备驱动的设计与实现
  4. 传统创业 vs. 精益创业:为什么说项目经理已经名存实亡
  5. 【转】使用SpringJUnit4ClassRunner进行单元测试
  6. imx6ull 正点原子设备树适配韦东山的开发板 (二)适配lcd,背光,和触摸屏
  7. 1.1.2.卡尔曼滤波-KalmanFilter
  8. 微信小程序:正则表达式
  9. windows下android studio常见快捷键
  10. essay--中国铁路 五纵三横 的主干线