为什么我的代码无法随机使用外部变量?

时间:2019-05-20 21:33:52

标签: javascript html scope

所以,我正在用JavaScript用HTML Canvas编写游戏。为了组织的目的,有很多不同的JS文件,但是有时,当我声明一个新变量时,许多(如果不是全部)其他变量在其他文件中将变得不可访问。为什么会这样?我将举一个例子,以便您更好地理解。假设我在file1.js中定义了此变量:

var randomVariable;

然后,在file2.js中,我尝试使用它:

randomVariable = 5;
if(randomVariable == 6){
    <some code idk>
}

这有效,但是有时无效。有时控制台告诉我file2.js中未定义“ randomVariable”。这是不一致的,我无法查明是什么原因造成的。我有一个个人库,其中包含一些有用的函数,并且在代码中使用了这些函数,但是有时,每个调用都会中断,并指出其未定义。我无法解决这个问题。在任何人问之前,这是.html文件的定义方式:

<html>

<canvas id="gameCanvas" width=800
height=600></canvas>

<script src="js/HUD.js"></script>
<script src="js/classes.js"></script>
<script src="js/movement.js"></script>
<script src="js/gameplay.js"></script>
<script src="js/graphics.js"></script>
<script src="js/input.js"></script>
<script src="js/audio.js"></script>
<script src="js/Main.js"></script>

</html>

这就是html代码的全部。有人告诉我这些文件的调用顺序很重要。但是,有时会,有时却没有。有时我可以从“音频”中定义的“类”中调用函数和变量。其他时候,它坏了。我非常需要帮助,因为它使编码变得不可能。

1 个答案:

答案 0 :(得分:0)

将此添加到每个文件:

window.addEventListener("load", function() {
    //Your code here
});

这将确保您的代码仅在Windows加载后才执行。因此,只有在正确加载所有文件之后。