我对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); } }

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

原文地址:https://www.cnblogs.com/pecool/p/11730101.html