【问题标题】:Breaking dependencies in JavaScript打破 JavaScript 中的依赖关系
【发布时间】:2016-06-05 19:03:39
【问题描述】:

当我有几个在 JS 中接受参数和返回值的链式函数时,这个依赖被称为什么以及如何打破它?

例子

function a (arg1){
  return res1;
}

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

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

c(arg3);

【问题讨论】:

  • 请编辑问题,使其至少没有语法错误,并清楚说明您要避免的模式以及原因。
  • 据我所知,您只是在其他函数中使用函数。这是完全正常的,通常不需要更改。
  • 不会像方法链那样建立依赖关系吗?
  • 甚至没有关闭.. 方法链接返回对this 对象的引用,因此您可以继续轻松使用它
  • 必须弄清楚方法链接和火车残骸之间的区别......

标签: javascript dependencies solid-principles


【解决方案1】:

这称为“相互递归”。

相互递归是指两个或多个函数相互调用。还有一堂课,一小堂课,但有一类计算机科学问题实际上无法解决。如果没有相互递归的概念,它们在技术上是可解决的,但实际上是不可解决的,因为它需要跟踪单独的堆栈。因此,如果您考虑一下,如果没有提升,在语言中相互递归将是不可能的,因为其中一个函数总是被声明得太晚。

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

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

你说的我怎么破解它是什么意思?

【讨论】:

  • 据我了解,上面的代码不是相互递归的。没有两天的依赖。这些函数都可以按照它们的使用顺序声明。没有?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-11-05
  • 2015-12-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多