ES6/7 中的循环依赖

Circular dependencies in ES6/7

我惊讶地发现,在 Babel 中,我可以毫无问题地相互拥有两个模块 import。我发现一些地方将此称为 Babel 中的已知和预期行为。我知道这被很多(我猜是大多数)人广泛认为是一种反模式,但是对于这个问题请忽略它:

有谁知道这在 ES6/7 中是否(或将是)正确的行为?

我能找到的最接近官方答案(和技术解释)的是this comment on 2ality.com

我使用 nodeJS,所以它有点相同。据我所知,"require cycles" 不是非法的,即使通常最好避免使用它们。如果有一个循环,nodeJS 至少会处理:它不需要第二次。

这通常被认为是不好的做法。但是 ES 模块是为了支持循环依赖而设计的。 ES 2017 规范 15.2.1.16.3ResolveExport Concrete Method 中有一些信息。不过,我觉得真的很难读(说实话,吃了不少苦头)。您在 2ality.com 中提到的 post 可能更具可读性。