簡體   English   中英

如何在JavaScript中創建全局變量?

[英]How do I make a Global Variable in JavaScript?

因此,我希望儀表板能夠在一個功能中進行修改,然后在另一個功能中顯示。 有點像java中的公共變量。 這可能嗎? 請參閱下面的代碼。

var dashboard = new Array();
function init() {
    getXML(); //1.  goto get XML 2.// XML Parser
    displayXML();
}

function getXML() {
    console.log("getXML REACHED");
    $.ajax({
        type: "GET",
        url: "file:///H:/ModelDisplayV1/ModelDisplayV1/files/dashboard.xml",
        dataType: "xml",
        success: xmlParser
    });
}

function xmlParser(xml) {
    dashboard[0] = 7;
    console.log(dashboard);
});
}

function displayXML() {
    console.log("display xml function reached!!!");
    console.log(dashboard);
}

當我最終嘗試獲取console.log(dashboard)它說dashboard is undefined 我認為,通過在功能之外聲明儀表板將是全局的。 如何做到這一點,以便可以在一個功能中更改儀表板的內容並在另一個功能中進行檢索?

我比Java更熟悉Java。

ajax調用是異步的,因此在實際填充儀表板之前,請在init()方法中調用displayXML()函數。 因此改為:

var dashboard = new Array();
function init() {
    getXML(); //1.  goto get XML 2.// XML Parser
}

function getXML() {
    console.log("getXML REACHED");
    $.ajax({
        type: "GET",
        url: "file:///H:/ModelDisplayV1/ModelDisplayV1/files/dashboard.xml",
        dataType: "xml",
        success: xmlParser
    });
}

function xmlParser(xml) {
    dashboard[0] = 7;
    console.log(dashboard);
    displayXML();
});
}

function displayXML() {
    console.log("display xml function reached!!!");
    console.log(dashboard);
}

javascript中只有兩種作用域-全局作用域和函數。 如果未在函數內部聲明,則為全局。 如果未使用var聲明,則它也是隱式全局的。

var關鍵字將變量聲明為局部變量,否則您可以忽略該變量並將其全局化。

另一個選擇是將其插入窗口對象,如下所示:

window.dashboard = new Array();

這是將變量插入全局范圍的首選方法。

同樣,不要濫用您可能知道的全局變量。

如果您想在javascript中使用類似Java的類語義,請使用Revealing Module模式查看。

http://www.addyosmani.com/resources/essentialjsdesignpatterns/book/#revealingmodulepatternjavascript

從一開始就養成正確組織JavaScript代碼的習慣,將為您省去很多麻煩。

您需要將context傳遞給$.ajax()

$.ajax({
    type: "GET",
    url: "file:///H:/ModelDisplayV1/ModelDisplayV1/files/dashboard.xml",
    dataType: "xml",
    context: this,
    success: xmlParser 
});

暫無
暫無

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

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