本网站(662p.com)打包出售,且带程序代码数据,662p.com域名,程序内核采用TP框架开发,需要联系扣扣:2360248666 /wx:lianweikj
精品域名一口价出售:1y1m.com(350元) ,6b7b.com(400元) , 5k5j.com(380元) , yayj.com(1800元), jiongzhun.com(1000元) , niuzen.com(2800元) , zennei.com(5000元)
需要联系扣扣:2360248666 /wx:lianweikj
JS中的callee和caller
codesky · 133浏览 · 发布于2023-06-30 +关注

在JavaScript中,arguments.callee 是一个指向当前正在执行的函数的引用。它是 arguments 对象的一个属性,arguments 对象在函数内部自动创建,并包含了函数调用时传递的参数。它的主要作用是允许在匿名函数中递归调用自身,而无需知道函数的实际名称,这对于需要动态或递归地调用函数的情况很有用。

而caller 是一个函数对象的属性,它返回一个对当前正在执行的函数的引用。caller 属性只存在于被调用的函数中,并且可以通过函数对象访问。

callee

function calleeFn(n) {
  if (n <= 1) {
    return 1;
  }
  return n * arguments.callee(n - 1);
}

console.log(calleeFn(6)); // 输出: 720

这是一个使用 arguments.callee 实现递归的示例,用以计算给定数字的阶乘。

caller

function calleeFn(n) {
  if (n <= 1) {
    return 1;
  }
  return n * arguments.callee(n - 1);
}

console.log(calleeFn(6)); // 输出: 720

这是一个使用 caller 属性获取调用当前函数的函数的引用

这两个属性的作用在于在函数内部获取调用函数的信息,但它们存在一些问题和安全隐患。因此,在严格模式中,禁止使用它们,并推荐使用其他更安全和可靠的方式来实现相同的功能。例如,可以使用具名函数表达式来递归调用函数,或者使用回调函数、传递函数引用作为参数等来获取调用函数的引用。



相关推荐

PHP实现部分字符隐藏

沙雕mars · 1325浏览 · 2019-04-28 09:47:56
Java中ArrayList和LinkedList区别

kenrry1992 · 908浏览 · 2019-05-08 21:14:54
Tomcat 下载及安装配置

manongba · 970浏览 · 2019-05-13 21:03:56
JAVA变量介绍

manongba · 963浏览 · 2019-05-13 21:05:52
什么是SpringBoot

iamitnan · 1086浏览 · 2019-05-14 22:20:36
加载中

0评论

评论
分类专栏
小鸟云服务器
扫码进入手机网页