如何在不同的范围之间发送数组?

时间:2014-08-09 11:32:04

标签: javascript arrays scope

我在$(document).ready(function(){});

的范围内创建了数组

例如:

$(document).ready(function(){
    $.getJSON("data.json", function(json) {

        function Question(q,correactA,array)
        {
            this.question=q;
            this.correct_a=correactA;
            this.answers=array;

        }

        multiQ= new Array();
        for (i=0;i<5;i++)
        {
            var q = json.questions[i].question;
            var corA= json.questions[i].correct_answer;
            var a = json.questions[i].answers;
            var aString = "";
            Object.keys(a).forEach(function (k) {aString += a[k] ;})
            multiQ[i]=new Question(q,corA,aString);
        }

        for (i=0;i<5;i++)
        {
            console.log(multiQ[i]);
        }

    });
});

现在我想将multiQ数组发送到范围外的外部var。 我该怎么办?

2 个答案:

答案 0 :(得分:-1)

这非常难看,但你可以在document.ready中分配一个全局的getter。例如:

var multiQ = new Array();
window.getMultiQ = function() { return multiQ; }

然后在文档就绪之外,你可以调用“var q = getMultiQ();”

同样,这非常难看,并且会导致代码难以维护。最有可能的是,有一种更容易/更清洁的方式来完成你想要做的事情。

答案 1 :(得分:-1)

声明

var multiQ= new Array();

$(document).ready函数:

var multiQ= new Array();
$(document).ready(function(){
    $.getJSON("data.json", function(json) {

        function Question(q,correactA,array)
        {
            this.question=q;
            this.correct_a=correactA;
            this.answers=array;

        }

        for (i=0;i<5;i++)
        {
            var q = json.questions[i].question;
            var corA= json.questions[i].correct_answer;
            var a = json.questions[i].answers;
            var aString = "";
            Object.keys(a).forEach(function (k) {aString += a[k] ;})
            multiQ[i]=new Question(q,corA,aString);
        }

        for (i=0;i<5;i++)
        {
            console.log(multiQ[i]);
        }

      });
});