如何定义全局数组

How to define Global Arrays?

本文关键字:全局 数组 定义 何定义      更新时间:2023-09-26

代码示例:

 <script>
      var data = new Array();
      data[0] = 'hi';
      data[1] = 'bye';
 </script>
 <script>
      alert(data[0]);
 </script>

这将给出以下错误:data is not defined

你如何让这样的东西工作?特别是如果第一个<script>块由 ajax 加载到页面上,而第二个块正在从中工作。 jQuery解决方案是可以接受的。

New不是关键字。

用:

var data = new Array();

或者,更简洁地说:

var data = [];

编辑后,您提到第一个脚本块是异步加载的。您的代码将无法按编写的方式工作。 data 加载到页面上后就是一个全局变量。您需要使用回调模式来正确执行代码。

由于您尚未发布异步代码,因此我不打算提供callback示例。不过,一个快速的解决方案如下:

var interval = setInterval(function(){
    if(data) {
        /* ... use data ... */
        clearInterval(interval);
    }
}, 500);

要创建全局变量,只需从语句中省略"var"。当您省略"var"时,您实际上是在窗口命名空间中创建变量。

所以,zz = 1实际上是window.zz = 1

如果你真的想,你可以明确地说

window.data = new Array(); //remember that new should be lowercase.

但无论如何,你可以通过说

data = ['hi','bye'];
alert(data);
如果你

使用的是jQuery,也许你应该尝试.getScript()而不是使用.html();

// in separate file
data[0] = 'hi';
data[1] = 'bye';

// in main file
var data = [];
$.getScript(url).done(function() {
    alert(data[0]);
}).fail(function() {
    // handle error
});  
<script>
       data = [];
      data[0] = 'hi';
      data[1] = 'bye';
 </script>
 <script>
      alert(data[0]);
 </script>

使用这个,删除变量使变量全局