首页
Javascript
Html
Css
Node.js
Electron
移动开发
工具类
服务端
浏览器相关
前端收藏
其他

javascript Arguments对象之length、callee属性

2013年09月30日 发布 阅读(176) 作者:懒炖

arguments是调用对象的一个属性,它与形参及局部变量是一样的,它实际上是调用了一个Arguments对象,Arguments对象与数组相似,但它又不是数组,因为它不具备数组的一些常用方法,如push,sort,shift等等。Arguments对象有两个属性:

1、length属性,我们可以利用Arguments对象的length属性来获取实际传递进的参数有几个。

  1. function a(x, y, z) {
  2. //arguments.callee指向函数a(),arguments.callee.length==a.length;
  3. alert(arguments.callee.length);
  4. //输出5
  5. alert(arguments.length);
  6. if (arguments.callee.length != arguments.length) {
  7. //判断形参与实参个数是否相等,不相等则不执行
  8. return false;
  9. }
  10. alert("执行");
  11. };
  12. a(1,2,3,4,5);

2、callee属性,Arguments对象的callee属性,指向当前调用的函数,可以利用它来进行函数自身的重载。在闭包中应用的也比较广泛。

  1. var i = 0;
  2. function b(num) {
  3. if (num < 10) {
  4. num++;
  5. i++;
  6. //如果有参数,callee也要把参数带上;
  7. arguments.callee(num);
  8. } else {
  9. //输出2次
  10. alert("调用了"+i+"次callee!");
  11. }
  12. }
  13. b(8);

Arguments.callee在闭包中的应用,它提供了一种递归调调用的功能。

  1. //用arguments.callee计算10的阶乘,例如: 1×2×3×4×5×6×7....
  2. function c(x) {
  3. return x > 1 ? x * arguments.callee(x - 1) : 1
  4. } (10);
  5. //输出6
  6. alert(c(3));
  7. //输出3628800
  8. alert(c(10));
版权声明:本站文章除特别声明外,均采用署名-非商业性使用-禁止演绎 4.0 国际 许可协议,如需转载,请注明出处

评论

  •  
  • 收集的一些轻量高效的开源JavaScript插件和库

    轻量高效的开源JavaScript插件和库

    发布:2019-02-25 阅读(355)

  • 为什么要在javascript中进行静态类型检查.Part2&amp;3[译]

    在第一部分中我们了解了许多基础知识,结束了语法的学习,我们可以进入下一个更有趣的部分:使用静态类型的优势和劣势

    发布:2018-12-21 来源:AlienZHOU

  • 为什么要在javascript中进行静态类型检查.Part1[译]

    作为一个JavaScript开发者,你可以编写一整天编写也不会遇到任何静态类型检查得问题。那么为什么要自找麻烦得去学习它呢? 然而学习静态类型并不仅仅是一个思维拓展的训练。如果你愿意花点时间来学习一些静态类型的优势、劣势以及使用的案例,那将会极大的帮助你进行编码。 怎么样,有意思吧?要是你感兴趣的话,那接下来四个部分将会向你详细解释

    发布:2018-12-21 来源:AlienZHOU

  • ECMA-262-5详述 第一章. 属性和属性描述符

    这一章专门讨论了ECMA-262-5 规范的新概念之一 — 属性特性及其处理机制 — 属性描述符。 当我们说“一个对象有一些属性”的时候,通常指的是属性名和属性值之间的关联关系。但是,正如在ES3系列文章中分析的那样,一个属性不仅仅是一个字符串名,它还包括一系列特性—比如我们在ES3系列文章中已经讨论过的{ReadOnly},{DontEnum}等。因此从这个观点来看,一个属性本身就是一个对象

    发布:2018-10-26 阅读(228)

  • [阮一峰]JavaScript 教程

    本教程全面介绍 JavaScript 核心语法,从最简单的讲起,循序渐进、由浅入深,力求清晰易懂。所有章节都带有大量的代码实例,便于理解和模仿,可以用到实际项目中,即学即用。

    发布:2018-10-19 来源:wangdoc.com

  • javascript检测浏览器的缩放状态,页面放大了或缩小了

    检测这种缩放有很种方法,QQ空间都通过flash来检测浏览器是否处于缩放。这里提供javascript的方法来检测浏览器的缩放。

    发布:2014-10-13 阅读(357)

  • javascript判断是否有夏令时(Daylight Saving Time)

    当你的项目中的时间需要考虑时区,夏令时时,下面判断夏令时的方法就很有用了!

    发布:2014-07-22 阅读(154)

  • javascript检测是否联网,是否为脱机状态

    通过JS检测网络是否OK,最简单粗暴的方式就是加载网络资源,JS文件或者图片文件...

    发布:2014-05-19 阅读(145)

  • javascript方法setMonth设置2月份变成3月份的小问题

    项目使用了setMonth来设置时间,发现了一个问题,2月份设置下去,显示出来变成3月份了。

    发布:2013-12-22 阅读(154)

  • javascript严格模式(use strict)

    除了正常运行模式,ECMAscript 5添加了第二种运行模式:"严格模式"(strict mode)。顾名思义,这种模式使得Javascript在更严格的条件下运行。

    发布:2013-11-13 阅读(182)