【问题标题】:Can't access global array in JavaScript [duplicate]无法在 JavaScript 中访问全局数组 [重复]
【发布时间】:2013-01-11 18:27:59
【问题描述】:

我有一个全局变量说:

var series,hours;
var loadData = function(){
series = [[]];
hours = [];
d3.json("data/radar.json", function(error, data) {

    data.QualitySummaryObject.forEach(function(d,i) {
        series[i] = d.extractPercentage;
        hours[i] = d.extractorName;
  });


});  
console.log(hours);
};

现在,如果我尝试访问此 console.log,它可以正常工作,但是。

var print = function(){
    console.log(hours); //here its not working no value in hours why ... ?
}

【问题讨论】:

  • 你在哪里打电话打印?
  • 使用hours = [] 而不是var hours。从声明中删除varhours 将变为全局

标签: javascript


【解决方案1】:

确保您的hours 是全球性的:

window.hours = [];

然后你可以在任何地方记录它:

console.log(window.hours);

直接使用 var 而不声明将避免上下文问题。

【讨论】:

    【解决方案2】:

    如果您在函数中运行上述代码,则变量hours 不是全局变量,因为您之前使用var 声明了它。

    如果你想将一个变量声明为全局变量,而不是这样:

    var hours = [];
    

    这样做:

    hours = [];
    

    要声明一个全局变量,你所要做的就是给它一个名字。

    【讨论】:

    • 不,我没有在任何函数中运行...... var hours 在每个函数之外声明......
    • @SaurabhSinha 无论哪种方式,您都不需要在所有函数之外使用 var 声明全局变量。
    • @starbeamrainbowlabs:为什么不呢?甚至可以(并且应该)声明全局变量。
    • @Bergi 不知道!我认为javascript中的全局变量是在没有var的情况下声明的。
    • @starbeamrainbowlabs:只是没有var 并且没有声明的所有东西都被认为是全局的。
    猜你喜欢
    • 2019-08-06
    • 2019-03-29
    • 1970-01-01
    • 2014-01-17
    • 1970-01-01
    • 1970-01-01
    • 2015-11-15
    • 2012-03-06
    • 1970-01-01
    相关资源
    最近更新 更多