我对arguments.callee的理解

Posted pecool

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我对arguments.callee的理解相关的知识,希望对你有一定的参考价值。

基本理解:

你怎么看待一个函数呢?又如何看待一个函数对象呢?函数和Function之间的关系到底是什么?我觉得理解这些对理解arguments.callee有所帮助。

先说说auguments.callee是什么:它是一个指针,它指向当前函数,这个函数没有当前的参数环境,是一个纯净的Function实例,就好比一个厕所,对象只是去厕所撒尿,撒完尿它会出来,厕所还是厕所技术图片

案例说明:

网上找到一个例子,可以很好说明它的用途,怎么看耦合性高低,假如我这样调用 let copy = factorial;    factorial = null;    copy(3);  一般写法结果是错误的,而升级写法是正确的。使用它还有一个作用,可以直接从函数中获取原型对象。

//一般的写法,缺点耦合性高(红色部分)
function
factorial(num){ if (num <=1) { return 1; } else { return num * factorial(num-1) } }
//升级写法,优点耦合性低
function
factorial(num){ if (num <=1) { return 1; } else { return num * arguments.callee(num-1); } }

 

你学到东西了,记得点赞告诉我。

 

以上是关于我对arguments.callee的理解的主要内容,如果未能解决你的问题,请参考以下文章

搞清arguments,callee,caller

二——01Day:对象的索引理解,对象上的this指向,对象转换为字符串,函数的预解析,arguments.callee的用法,

arguments.callee Function.callee arguments.caller总结

arguments.callee

arguments.callee的用法

为啥 arguments.callee 会损害性能?