如何强制函数创建全局变量

Ost*_*rov 5 javascript arrays function

如何强制函数创建全局变量?我有这个代码:

$.ajax({
  url: 'https://dl.dropboxusercontent.com/s/11ofmbg4d4y3gb0/zakaznice_tyden.csv',
  dataType: 'text',
}).done(successFunction);

function successFunction(data) {
  var promenna = data.replace(/\n/g,";").split(";");
  var result = [];
  for (var i = 0; i < promenna.length; i+=2) {
  var line = [];
    line.push(promenna[i]);
    line.push(promenna[i+1]);
    result.push(line);
  }
  for (var i = 0; i < result.length; i += 1){
    $("#tyden" + i + "").append(result[i][0]);
    $("#tyden" + i + "kolik").append(result[i][1]);
  }
}
Run Code Online (Sandbox Code Playgroud)

它加载 csv 文件并从中创建数组。如何使数组“line”全局可达?

Rio*_*ams 5

将其范围置于函数范围之外

最常见的方法可能是简单地在函数范围之外声明它(如果这是一个选项):

// This will be globally accessible from any child functions, etc.
var array = [];

function example(){
    // Your code here can access the array as expected
}
Run Code Online (Sandbox Code Playgroud)

隐式全局声明

如果你想声明一个具有全局作用域的变量,只需在var声明它时省略,这将隐式地在全局范围内创建它:

function example(){
    // This will be a global variable
    array = [];
}
Run Code Online (Sandbox Code Playgroud)

注意:这在严格模式下不起作用,严格模式消除了隐式全局变量。您可以在此处阅读有关此方法的更多信息

存储变量

另一个很好的方法是简单地将对象存储为window对象的属性,并从那里访问它,如Pamblam 的回答中提到的。