为什么可以';我不能访问这个JavaScript代码中的全局变量吗?

为什么可以';我不能访问这个JavaScript代码中的全局变量吗?,javascript,global-variables,Javascript,Global Variables,在下面的代码中,我无法从函数中访问“颜色”,但我可以访问“numColors”。getColors()函数似乎正确地设置了数组,但init()函数无法访问它,如alert语句结果所示 可以使用参数字符串调用该页面,如“?colors=0000FF | FF0000” (功能(){ var颜色=[]; 新颜色变种; document.addEventListener(“DOMContentLoaded”,init,false); 函数init(){ colors=getColors() 警报(n

在下面的代码中,我无法从函数中访问“颜色”,但我可以访问“numColors”。getColors()函数似乎正确地设置了数组,但init()函数无法访问它,如alert语句结果所示

可以使用参数字符串调用该页面,如“?colors=0000FF | FF0000”


(功能(){
var颜色=[];
新颜色变种;
document.addEventListener(“DOMContentLoaded”,init,false);
函数init(){
colors=getColors()
警报(numColors);
警报(颜色);
}
函数getColors(){
var data=getURLParameter('colors');
var list=data.split(“|”);
对于(i=0;i
getColors
在运行时修改
colors
,然后使用
getColors()
的返回值覆盖
colors
,该值(因为它缺少
return
语句)是
未定义的

删除分配:

function init() {   
    getColors()

或者更改
getColors
,使其使用局部变量然后返回

getColors
在运行时修改
colors
,然后使用
getColors()
的返回值覆盖
colors
,该返回值(因为它缺少
return
语句)是
未定义的

删除分配:

function init() {   
    getColors()
或者更改
getColors
,使其使用局部变量然后返回

您的
init()
函数不应该是

function init() {   
    getColors();

    alert(numColors);
    alert(colors);
 }
您正在将
colors
设置为
getColors
函数的返回值。但是,您不返回值,因此
colors
将设置为
undefined

您的
init()
函数不应该

function init() {   
    getColors();

    alert(numColors);
    alert(colors);
 }
您正在将
colors
设置为
getColors
函数的返回值。但是,您不返回值,因此
colors
将被设置为
undefined

您的getColors()函数没有返回任何内容,但您在说:

colors = getColors();
我想如果你打电话给我,这会有用的:

getColors();
getColors()函数没有返回任何内容,但当您说:

colors = getColors();
我想如果你打电话给我,这会有用的:

getColors();

当您发出警报(颜色)
时会发生什么?您所说的“从警报语句结果中看到”是什么意思?你看到了什么?注意:
颜色
numColors
不是全局变量,而是闭包变量。当你
警报(颜色)
时会发生什么?你说的“警报语句结果所见”是什么意思?你看到了什么?注意:
颜色
numColors
不是全局变量,而是闭包变量。