我有两个非常大的函数a
和b
,它们目前位于一个大的JavaScript文件中。我的目标是将每个函数放在一个单独的JavaScript文件中。
问题是a
拨打b
,b
拨打a
,这样如果我将两个功能放在不同的文件中,那么错过了另一个的定义,我得到一条错误信息,事情就破了。
当它们在同一个文件中时,在相同的关闭下,由于提升,事情不会中断。当每个函数引用另一个文件时,如何将这两个函数放在不同的文件中?
答案 0 :(得分:4)
如果它们将在不同的文件中,那么你不会将它们放在同一个闭包中,这就是火灾问题。
之后,如果您愿意强制执行加载顺序(即首先加载A,B),那么只需要A定义B的存根,然后B将在加载时重新定义它。只要A在B加载之前没有执行,你应该没问题。
答案 1 :(得分:1)
使用Google Loader,然后您就知道在函数调用之前脚本可用。
答案 2 :(得分:1)
如果它们像这样分开,我不会将它们分成单独的文件。相反,尝试自己分解功能。长文件没有问题,但长函数通常无法维护。
除此之外:如果它们是单独的函数,它们是否在同一个文件中并不重要,只要两个文件都被加载,并且在两个文件都加载之前不调用这些函数。
答案 3 :(得分:0)
你不允许这样的事情:
a.js:
function a() {}
b();
b.js:
function b() {}
a();
只允许定义函数。在a.js和b.js之后添加的第三个脚本中,您可以调用a()
或b()
。然后,function a
的INSIDE调用可以调用function b
,反之亦然。