argument为函数内部对象,包含传入函数的所有参数,arguments.callee代表函数名,多用于递归调用,防止函数执行与函数名紧紧耦合的现象,对于没有函数名的匿名函数也非常起作用。举例如下:

function factorial(num){if(num<=1){return 1;}else{return num*arguments.callee(num-1);  //arguments.callee代表factorial}
}
var trueFactorial = factorial;
factorial = function(){return 0;
}
alert(trueFactorial(5)); //结果为120,因为js中函数没有重载,所以如果递归调用时使用函数名,则执行最后一个该函数名的函数,即返回0
alert(factorial(5));//结果为0

匿名函数的递归:

var num = (function(num){if(num<=1){return 1;}else{return num*arguments.callee(num-1);}})(5);alert(num); //结果为120

红绿灯异步输出

function showRed(fn1, fn2){var f = arguments.callee; //函数本身//arguments.callee 执行该函数的上下文执行环境,指向调用他的对象setTimeout(function(){console.log("红灯");fn1(fn2, f);}, 2000);
}function showYellow(fn1, fn2){var f = arguments.callee;setTimeout(function(){console.log("黄灯");fn1(fn2, f);}, 1000);}function showGreen(fn1, fn2){var f = arguments.callee;setTimeout(function(){console.log("绿灯");fn1(fn2, f);}, 3000);
}showRed(showYellow, showGreen);

arguments.callee的用法相关推荐

  1. javaScript中递归和arguments.callee

    现在已经不推荐使用arguments.callee(): 原因:访问arguments是个很昂贵的操作,因为它是个很大的对象,每次递归调用时都需要重新创建.影响现代浏览器的性能,还会影响闭包. 但是, ...

  2. JavaScript中的arguments,callee,caller

    2019独角兽企业重金招聘Python工程师标准>>> arguments: arguments 该对象代表正在执行的函数和调用它的函数的参数. [function.]argumen ...

  3. 【转】全面理解javascript的arguments,callee,caller,call,apply概念(修改版)

    (注:在看到大家如此关注JS里头的这几个对象,我试着把原文再修改一下,力求能再详细的阐明个中意义  2007-05-21) 在提到上述的概念之前,首先想说说javascript中函数的隐含参数:arg ...

  4. js的隐含参数(arguments,callee,caller)使用方法

    本篇文章只要是对js的隐含参数(arguments,callee,caller)使用方法进行了介绍,需要的朋友可以过来参考下,希望对大家有所帮助 在提到上述的概念之前,首先想说说javascript中 ...

  5. JavaScript中的arguments,callee,caller,call,appy

    代码 <script language="JavaScript"> /* * 演示arguments的用法,如何获取实参数和形数数 */ function argTes ...

  6. arguments.callee()

    arguments.callee 在哪一个函数中运行,它就代表哪个函数. 一般用在匿名函数中. 在匿名函数中有时会需要自己调用自己,但是由于是匿名函数,没有名子,无名可调. 这时就可以用argumen ...

  7. 小tips:JS严格模式(use strict)下不能使用arguments.callee的替代方案

    在函数内部,有两个特殊的对象:arguments 和 this.其中, arguments 的主要用途是保存函数参数, 但这个对象还有一个名叫 callee 的属性,该属性是一个指针,指向拥有这个 a ...

  8. arguments.callee查询调用b函数的是哪个函数

    // function functionname(){// function b(){// console.log(arguments.callee.caller.name);// }// b();/ ...

  9. html5斐波那契数列,经典的斐波那契数列与arguments.callee

    经典的斐波那契数列与arguments.callee HTML5学堂:提到斐波那契数列,很多人还不是太清楚,但是如果提到兔子繁殖这个经典题目,相信学过计算机语言的人们会立刻感觉"亲切&quo ...

最新文章

  1. 4702: 分糖果系列一
  2. Silverlight+WCF 实战-网络象棋最终篇之非线程阻塞倒计时窗口(四)
  3. 手把手教你部署VSAN见证虚拟设备 (Cormac)
  4. Android Studio 环境搭建参考,jdk10javac命令提示不是内部或外部命令
  5. 前端学习(3198):jsx语法规则2
  6. Android学习笔记(24):进度条组件ProgressBar及其子类
  7. day03【后台】管理员维护
  8. 使用mysqldump进行逻辑备份
  9. eclipse java 生成api_怎样使用Eclipse在Java中实现自己的API
  10. OpenCV-闭运算(CLOSE)
  11. 优雅的使用Python之软件管理
  12. 2000w mysql_MySQL数据库优化(基于酒店2000w条数据)
  13. 算法竞赛入门经典 电子书(附习题解析)网盘下载
  14. 分销体系的概念、模式及体系搭建
  15. MetaMask10.6.1点击切换本地网络LocalHost:8545没反应
  16. 配置有误:由于权限不足而无法读取配置文件
  17. fcitx输入法代码分析总结
  18. 应用“真心话大冒险”项目总结
  19. 第十二期 U-Boot工作原理 《路由器就是开发板》
  20. Debian/Ubuntu修改最大文件连接数ulimit -SHn的坑

热门文章

  1. 基于Halcon学习的基于灰度值模板匹配【一】exhaustive_match.hdev例程
  2. 获取族的实例参数和类型参数
  3. Python绘制股票移动均线
  4. 国花评选惹争议:国花凭什么只能有一种?
  5. Axure中继器结构与原理详解
  6. python,pycharm 的环境变量设置
  7. 桌面倒计时html,javascript实现下班倒计时效果的方法(可桌面通知)_javascript技巧
  8. Windows修改中文用户名为英文
  9. vue中集合遍历的方式
  10. Element-UI 前端UI 组件库