如何定义全局数组?

时间:2012-04-09 17:08:08

标签: javascript jquery

代码示例:

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

 <script>
      alert(data[0]);
 </script>

这会出现以下错误:data is not defined

你怎么做这样的工作?特别是如果第一个<script>块被ajax加载到页面上,并且第二个块正在使用它。 jQuery解决方案是可以接受的。

4 个答案:

答案 0 :(得分:8)

New不是关键字。

使用:

var data = new Array();

或者,更简洁:

var data = [];

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

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

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

答案 1 :(得分:2)

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

因此,zz = 1实际上是window.zz = 1

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

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

但是你可以通过说

来更快地写出来
data = ['hi','bye'];
alert(data);

答案 2 :(得分:0)

如果你正在使用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
});  

答案 3 :(得分:0)

<script>
       data = [];
      data[0] = 'hi';
      data[1] = 'bye';
 </script>

 <script>
      alert(data[0]);
 </script>

使用此命令,删除var会使变量成为全局变量