簡體   English   中英

如何定義全局Arrays?

[英]How to define Global Arrays?

代碼示例:

 <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”時,您實際上是在 window 命名空間中創建變量。

所以, 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>

使用這個,刪除 var 使變量全局

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM