打破JavaScript中的依赖关系

时间:2016-06-05 09:22:23

标签: javascript dependencies solid-principles

当我有几个带有参数并在JS中返回值的链接函数时,这个依赖项被调用了什么,我该如何打破它呢?

实施例

function a (arg1){
  return res1;
}

function b (arg2){
  function a(arg1);
  return res2;
}

function c (arg3){
  function b(arg2);
  return res3;
}

c(arg3);

1 个答案:

答案 0 :(得分:1)

这称为" 相互递归"。

相互递归是指两个或多个相互调用的函数。这是一个全班,一个小班,但是有一类计算机科学问题实际上是无法解决的。它们在技术上是可解决的,但在没有相互递归概念的情况下实际上是不可解决的,因为它需要跟踪单独的堆栈。因此,如果你想一想,相互递归就不可能在没有提升的情况下使用,因为其中一个函数总是被宣布为太晚。

JavaScript编译器以特定方式处理此问题。在初始传递函数期间,变量将被声明(提升),并且在执行JavaScript时(最终传递),所有函数都可以在那里执行。

由于提升性质,这种相互递归在JavaScript中是可能的。

我怎么能打破它?