如何访问不同JS文件之间的函数?

时间:2013-01-19 22:07:51

标签: javascript html scope

我试图通过使用专注于某些特定任务的多个javascript文件来分离我的应用程序的逻辑。

需要在文件本身之间访问JSfiles中定义的函数。

我理解调用函数的顺序很重要,定义“全局”与“本地”范围很重要。在以下文件中,文件未包含在函数中,因此我认为它们位于全局范围内。

file1.js

function addingToDOM(stuff) {
...  
...
}

file2.js

// call addingToDOM
addingToDOM(someStuff);
function doOtherTHings() {
...
...
}

HTML (文件顺序)

<script src="file1.js"></script>
<script src="file2.js"></script>

错误
addingToDOM is not defined

file2.js在HTML中file1.js之后调用file1.js 我不明白为什么没有定义。

3 个答案:

答案 0 :(得分:3)

您的JS文件应该只定义函数并调用同一JS文件中的函数。如果您要从另一个JS文件中调用函数,则需要首先加载该JS文件。我会将所有调用代码(有点像你的“主要”函数在其他语言中,如C)放在一个地方,最好是在你的html文档的末尾。毕竟,加载了其他JS文件(和标记)。这不是你不能从file2调用file1中的函数,而是它们应该在代码开始运行之前完全加载。

您的设置应该按原样运行,但请务必调用第一个不需要在JS文件中运行的函数,而是在HTML文档的末尾。

答案 1 :(得分:1)

问题看起来像是在脚本标记中引用了src属性。在HTML中试试这个:

<script src="file1.js"></script>
<script src="file2.js"></script>

答案 2 :(得分:1)

也许您正在寻找像require.js这样的东西:通过指定加载模块的顺序等,您可以轻松管理多个JS文件之间的依赖关系。

http://requirejs.org/

除此之外,建议在生产环境中只有一个包含所有您的代码(第三方库通常仍然是独立的)的JavaScript文件 - 然后可以缩小此文件,从而使其成为可能比多个文件更小,更快下载。但是在开发过程中这并不重要,你应该意识到它。

编辑:顺便说一句,require.js还提供了一种从所有模块中生成单个缩小文件的简便方法。