在Javascript中的主叫方和被叫方的详细解决方案
2023-11-26 02:28:08
Javascript的最近的研究中,主叫方和被叫方的问题,网上很多百度。对同一小利益的内容的内容,整理和总结与大家分享。 调用方:返回对调用函数函数的函数的引用(使用:函数调用)。 描述:对于一个函数,调用者属性只在函数执行时定义。如果从顶层调用函数,调用者是空的。 无功/时间= 3控制数量,删除会在来电和handlecaller交替不断 函数调用(){ (调用者)引用函数返回调用者的调用函数。 } 功能handlecaller(){ 如果(时间> 0){ 时间-- 警报(handlecaller。来电) /参考函数返回handlecaller呼叫功能 警报(调用者)调用函数返回调用者的调用函数。 来电者() } } HandleCaller() 实例分析:当第一handlecaller跑,两警报返回null,并提醒(handlecaller。来电)返回null,因为它是从顶层调用,并提醒(来电,来电)返回null因为访客的默认值为空。接下来,调用者()函数调用。Caller.caller返回引用的函数(handlecaller)。handlecaller功能可以通过caller.caller又称(),当第二次handlecaller跑警报(handlecaller。来电)返回调用者的代码,这其实是一个参考来电。警报(来电。电话)返回handlecaller代码。因为函数之间的调用关系是handlecaller ->人-> handlecaller.then 2功能不断交替进行。 调用方指向调用当前函数的函数,但如果在全局范围(即顶层窗口)调用它,则返回null。 代码上升 ==================== 的功能,而是使用TestCaller(){ 如果(testcaller.caller = = null){ console.log('accessed全球); 其他{ } console.log('accessed ' +而是使用TestCaller。来电); } } 全球呼叫 (而是使用TestCaller); / /访问在全球 调用函数 函数A(){ TestCaller(); } 一个(); / /访问功能(一)({而是使用TestCaller);} 在这一点上,testcaller.caller点功能 Callee:返回对应的实参的函数参考。(主要用于匿名函数的递归) 说明:也许是最重要的事,你在网络上看到的是被调用者返回一个函数的引用被处决。我明白每一个函数都有自己的观点,这是通常用来存储参数。参数具有callee属性,和初始值是一个函数引用自身。当你的函数执行这项声明,参数对应于你正在执行的函数的默认功能。然后arguments.callee是当前正在执行的函数参考。当然,如果你的论点(例子中的参数),有明显的其他功能,你可以很自然地叫,又args.callee()函数。 函数A(){ 警报(参数。被叫方) var args =参数 函数C(){ 警报(参数。被叫方) Args.callee() } (C) } (一) 实例分析:一个arguments.callee例是默认的参考函数返回当前执行的(一个返回自己的函数参考,C返回C,其功能参考)通过存储功能使用args参数,使用args.callee内置函数C()函数调用一次。 ==================== 函数A(x){ 如果(x=1) 返回x; 其他的 返回x +(X-1); } A(12 78) 这是一个简单的递归,运行结果是正常的。 看看下面的调用方法 var; a =空; B(12); / /错误:'a'is不是一个函数 原因很简单,B = A,B =函数(){ };B在打电话之前,我们使用了= null.so当函数运行,返回x +(X-1);在一个,它分为空,没有功能A. 因此,如何解决这个问题是错误的,让我们改变一种写作方式。 函数A(x){ 如果(x=1) 返回x; 其他的 返回arguments.callee(X-1); / /这是改变。 } 再打电话 var; a = null; b(12 78); The reason: Although we will be a=null, but the function a does not use a, instead, it points to the current function through the arguments.callee. 因为arguments.callee定义返回的函数被执行。tag:解决方案 详细 电脑软件 Javascript
相关内容