首页 > 解决方案 > 来自其他脚本的变量有时无法加载

问题描述

我有两个 JavaScript 脚本按此顺序链接到我的 HTML 文件:

<script src="first.js"></script>
<script src="second.js"></script>

first.js 有一个由 second.js 访问的变量。变量由文件末尾的 second.js 使用,变量在开头的 first.js 中定义。每当我重新加载站点时,偶尔会出现控制台错误,提示未定义 first.js 中的变量。

未捕获的 ReferenceError: dbis 未在 second.js:80 定义

为什么是这样?提前致谢。

完整示例:

第一个.js:

var db = [{name: "Obj1", property: "property1"}, {name: "Obj2", property: "property2"}]; // At Line 8

第二个.js:

function loadDbItems() {
    for(i = 0; i < db.length; i++) {
        console.log(db[i].name); // Line is Near End of Script
    }
}

标签: javascript

解决方案


您可以注册变量window以使其具有全局保证。
请参阅下面的脚本示例。

你不应该用你需要的每一个小变量来污染window对象,但是这样变量将存在于脚本中,前提是第一个先执行。

window.db = [{name: "Obj1", property: "property1"}, {name: "Obj2", property: "property2"}];
<html>
  <body onload="loadDbItems()">
    <script>
      function loadDbItems() {
        for(var i = 0; i < window.db.length; i++) {
            console.log(window.db[i].name);
        }
      }
    </script>
  </body>
</html>


推荐阅读