ECMAScript函数的参数与大多树其他语言中函数的参数有所不同。ECMAScript函数不介意传递进来多少个参数,也不在乎传进来参数是什么类型。函数体是通过arguments对象来访问参数数组。arguments对象只是与数组类似,但并不是数组实例。

  例如,在函数 sayHi() 中,第一个参数是 message。用 arguments[0] 也可以访问这个值,即第一个参数的值(第一个参数位于位置 0,第二个参数位于位置 1,依此类推)。

因此,无需明确命名参数,就可以重写函数:

  function sayHi(){

    alert("Hello " + arguments[0] + "x" + arguments[1]);

  }

检测参数个数

  还可以用 arguments 对象检测函数的参数个数,引用属性 arguments.length 即可。

  下面的代码将输出每次调用函数使用的参数个数:

  function howManyArgs() {

     alert(arguments.length);

  }

  howManyArgs("string", 45);

  howManyArgs();

  howManyArgs(12);

  上面这段代码将依次显示 "2"、"0" 和 "1"。

  注释:与其他程序设计语言不同,ECMAScript 不会验证传递给函数的参数个数是否等于函数定义的参数个数。开发者定义的函数都可以接受任意个数的参数(根据 Netscape 的文档,最多可接受 255 个),而不会引发任何错误。任何遗漏的参数都会以 undefined 传递给函数,多余的函数将忽略。

模拟函数重载

  用 arguments 对象判断传递给函数的参数个数,即可模拟函数重载:

  function doAdd() {   

    if(arguments.length == 1) {

      alert(arguments[0] + 5);

     } else if(arguments.length == 2) {

      alert(arguments[0] + arguments[1]);

     }

  }

  doAdd(10); //输出 "15"

  doAdd(40, 20); //输出 "60"

  当只有一个参数时,doAdd() 函数给参数加 5。如果有两个参数,则会把两个参数相加,返回它们的和。所以,doAdd(10) 输出的是 "15",而 doAdd(40, 20) 输出的是 "60"。

  虽然不如重载那么好,不过已足以避开 ECMAScript 的这种限制。

转载于:https://www.cnblogs.com/zhutianpeng/p/4262317.html

javascript参数arguments对象相关推荐

  1. JavaScript高级使用(一)--参数Arguments对象

    在定义函数时,可以不定义形参,但是在函数体内可以通过Arguments对象获取到传递给函数的每个实参值: <script> function f(){//函数没有定义形参for(var i ...

  2. JS 函数参数arguments对象(实例)

    实例(统计所有数值的和) <!DOCTYPE html> <html> <head> <meta charset="utf-8"> ...

  3. 如何利用JavaScript的arguments对象实现用代码打印调用栈的需求

    示例代码: <html> <script> function getCallStack() {var stack = "Callstack:", fn =a ...

  4. 对JavaScript内置对象arguments的一些见解

    深入理解JavaScript内置对象arguments 这两天有伙伴问到我关于arguments的问题,使我产生了一种arguments对象容易被学习者忽略的想法,想分享一下自己对于JavaScrip ...

  5. 你知道 JavaScript 中的 Arguments 对象都有哪些用途吗?

    JavaScript 中 Arguments 对象的用途总结. 前言 相信我们很多人在代码开发的过程中都使用到过一个特殊的对象 -- Arguments 对象. 在实际开发中,Arguments 对象 ...

  6. JavaScript 函数 ,对象

    复习函数 函数定义 function函数名(){ 函数体 函数调用: 函数名() *参数:形参和实参 *形参:函数定义的时候函数名字后面的小括号里的变量就是参数,是不需要写var *实参:函数调用的时 ...

  7. Arguments 对象

    arguments 是一个对应于传递给函数的参数的类数组对象. arguments对象是所有(非箭头)函数中都可用的局部变量. 可以使用arguments对象在函数中引用函数的参数.索引从0开始. a ...

  8. JavaScript教程——函数(arguments 对象)

    arguments 对象 定义 由于 JavaScript 允许函数有不定数目的参数,所以需要一种机制,可以在函数体内部读取所有参数.这就是arguments对象的由来. arguments对象包含了 ...

  9. JavaScript学习系列3 -- JavaScript arguments对象学习

    在实际项目开发中,目前还是很少使用到JavaScript 中的arguments对象,那么它到底是干什么用的呢 arguments是JavaScript中的一个类数组对象,它代表传给一个正在执行的函数 ...

最新文章

  1. 平时的你VS面试的你
  2. 2016年5月9日 晨间日记
  3. android 自定义flowlayout,Android 自定义ViewGroup之实现FlowLayout-标签流容器
  4. mysql同一台服务器上不同数据库中个别表内容同步
  5. mybatis工作笔记002_mybatis中如果返回的结果没有的话默认返回null的list_但可启用returnInstanceForEmptyRow_返回为list不为null但为0条
  6. 吊打 IE、Firefox,谷歌 Chrome 十年封神记
  7. 无线时代来临,谁来管理我的无线AP?
  8. 非标准硬件控制之增加系统API
  9. error:“Unexpected namespace prefix xmlns found for tag LinearLayout”
  10. Access 数据库导入到SQL Server 2000
  11. 深度学习--概率图模型(一)
  12. Mathpix小工具下载
  13. delphi微信授权登陆
  14. 天津仁爱学院2021级高职升本科新生报到须知
  15. pandas学习手记-柱状图
  16. 最新版网页浏览器Flash插件离线版安装程序下载
  17. 订单助手,拼多多,淘宝或者自定义商城,自动下单发货,无人值守店铺
  18. 多尺度计算机模拟方法,多尺度问题的数值模拟.pdf
  19. 240. 搜索二维矩阵 II
  20. HTML/CSS共7k字带你能独立完成简单网页的制作

热门文章

  1. 夺冠没含金量!用python和BI可视化分析,湖人赢在这点上
  2. 看完阿里的代码规范,立马学会代码分层,再也不会被同事怼
  3. CIO们拼命都想上的“网红”中台,也有它的另一面
  4. mybatis 一对一、一对多查询、多对多(使用注解)
  5. ssm练手小项目_20 个 JavaScript+Html+CSS 练手的小项目
  6. vue添加弹出框数据绑定
  7. vue添加网址连接需要强制数据绑定(a标签里面添加网址)
  8. G - Periodic Strings (周期串)
  9. Puzzle——模拟
  10. 数据结构实验 寻找数组主元素(2013考研题)