Javascript可以';t从一个文件到另一个文件访问数组

Javascript可以';t从一个文件到另一个文件访问数组,javascript,php,Javascript,Php,在我的php页面中,我包含了2个.js文件,第一个文件创建并填充了一个js数组,我需要在第二个.js文件中访问该数组。出于某种原因,当我知道数组正在填充时,我得到一个错误,即数组未定义。为什么这个坏了? 我做错了什么 Error: ReferenceError: sl is not defined 您从first.js引用的代码是否在函数(可能是$(function(){});)中?JavaScript具有函数作用域,使得var sl=[]不是全局的(无论顺序如何)在哪里定义了“sl”?它是否在

在我的php页面中,我包含了2个.js文件,第一个文件创建并填充了一个js数组,我需要在第二个.js文件中访问该数组。出于某种原因,当我知道数组正在填充时,我得到一个错误,即数组未定义。为什么这个坏了?
我做错了什么

Error: ReferenceError: sl is not defined
您从first.js引用的代码是否在函数(可能是
$(function(){});
)中?JavaScript具有函数作用域,使得
var sl=[]
不是全局的(无论顺序如何)

在哪里定义了“sl”?它是否在全球范围内?如果是这样,您确定second.js是第二个被计算的吗?JavaScript会按顺序(从上到下)中断,因此尝试引用下面声明的变量将引发错误。请确保second.js实际上包含在first.js之后。如果用户从一开始就登录,则会在加载php页面时定义并填充它。但他们可以在通过jquery加载页面后登录,然后在登录成功后在first.js中声明并加载sl。您如何确保顺序?除了从上到下之外?噢,second.js中的逻辑是在点击事件时触发的,所以first.js中的逻辑肯定是首先发生的是,问题是关于范围的。一旦我在任何函数之外声明了数组,我就能够在需要的任何地方成功地填充和引用它。我真的很感谢你的快速帮助!
var sl = [];
for (var i = 0; i < j.length; i++) {
    options += '<option value="' + j[i].value + '">' + j[i].text + '</option>';
    sl[j[i].value] = [];
    sl[j[i].value]['shopping_list'] = j[i].text;
    sl[j[i].value]['is_private']= j[i].is_private;
    console.log('printing SL for ' + j[i].value);
    console.log(sl[j[i].value]['shopping_list']);
}
$("#shopping_list_name").val(sl[$("#existing_shopping_lists").val()]['shopping_list']);