Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/462.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript ES6:自导入与订购导出以供参考_Javascript_Ecmascript 6_Jestjs_Cyclic Dependency - Fatal编程技术网

Javascript ES6:自导入与订购导出以供参考

Javascript ES6:自导入与订购导出以供参考,javascript,ecmascript-6,jestjs,cyclic-dependency,Javascript,Ecmascript 6,Jestjs,Cyclic Dependency,我有一个包含utils方法的文件。每个都单独导出。我的处境是,一方需要另一方。我目前定义了使用前使用的函数。但是我遇到了ES6的循环依赖性,使用它就不需要仔细组织util函数。有什么理由我不应该使用它吗 简化例句: 目前: export const safeParsing = (str) => { try { return JSON.parse(str); } catch (e) { return {}; } }; export const parseTo

我有一个包含utils方法的文件。每个都单独导出。我的处境是,一方需要另一方。我目前定义了使用前使用的函数。但是我遇到了ES6的循环依赖性,使用它就不需要仔细组织util函数。有什么理由我不应该使用它吗

简化例句: 目前:

  export const safeParsing = (str) =>  { 
    try { return JSON.parse(str); }
    catch (e) { return {}; }
  };

  export const parseToken = (t) => safeParsing(t); 
使用循环dep:

import * as self from 'src/jsUtils';

export const parseToken = (t) => self.safeParsing(t);
export const safeParsing = (str) => {...}

编辑:使用循环导入还使我能够使用spyOn(Jest)内部函数。 例如:

相关参考文献:


如果使用
函数safeParsing(){…}
将它们定义为普通函数,而不是将它们分配给常量变量,则排序不再重要,因为所有函数定义都被提升到作用域的顶部。因此,您可以按任意顺序使用所有函数。如果执行
const safeParsing=…
,则必须非常小心地对声明进行排序,因为只有在分配声明之后才能使用它们。这就是我使用正则命名函数声明而不是函数表达式(如您所示)的原因之一


而且,您仍然可以执行导出函数safeParsing(){…}。只需将定义设置为函数声明,而不是函数表达式。

如果使用
function safeParsing(){…}
将它们定义为普通函数,而不是将它们分配给
const
变量,那么排序就不再重要,因为所有
函数
定义都被提升到范围的顶部。因此,您可以按任意顺序使用所有函数。如果执行
const safeParsing=…
,则必须非常小心地对声明进行排序,因为只有在分配声明之后才能使用它们。这就是我使用正则命名函数声明而不是函数表达式(如您所示)的原因之一。而且,您仍然可以执行
export function safeParsing(){…}
。只需将定义设置为函数声明,而不是函数表达式即可。@jfriend00谢谢您的回答。这对我很有用。我建议你在回答这个问题时加上这句话
 test('parseToken uses safe parsing', () => { ... spyOn safeParsing ... });