当我有几个带有参数并在JS中返回值的链接函数时,这个依赖项被调用了什么,我该如何打破它呢?
实施例
function a (arg1){
return res1;
}
function b (arg2){
function a(arg1);
return res2;
}
function c (arg3){
function b(arg2);
return res3;
}
c(arg3);
答案 0 :(得分:1)
这称为" 相互递归"。
相互递归是指两个或多个相互调用的函数。这是一个全班,一个小班,但是有一类计算机科学问题实际上是无法解决的。它们在技术上是可解决的,但在没有相互递归概念的情况下实际上是不可解决的,因为它需要跟踪单独的堆栈。因此,如果你想一想,相互递归就不可能在没有提升的情况下使用,因为其中一个函数总是被宣布为太晚。
JavaScript编译器以特定方式处理此问题。在初始传递函数期间,变量将被声明(提升),并且在执行JavaScript时(最终传递),所有函数都可以在那里执行。
由于提升性质,这种相互递归在JavaScript中是可能的。
我怎么能打破它?