2010-03-25 140 views
0

我确定这非常简单,我正在绘制一个巨大的空白,但是如何将函数的结果设置为全局变量?例如,我想将数组“颜色”中的第一个“颜色”设置为全局变量“颜色”(我知道这个例子没有多大实际意义,但它只是为了说明我的问题):如何将函数的结果设置为全局变量

var color = ""; 

function selectColor() { 
    var colors = ["blue","red","green","yellow"]; 
    var color = colors[0]; 
    return color; 
} 

window.onload = function() { 
    selectColor(); 
    alert(color); 
} 

回答

5

它应该为你工作,如果你从colorselectColor()功能删除var声明,就像这样:

var color = ""; 

function selectColor() { 
    var colors = ["blue","red","green","yellow"]; 
    color = colors[0]; 
    return color; 
} 

window.onload = function() { 
    selectColor(); 
    alert(color); 
} 
+1

补充说明:JavaScript变量作用域是基于函数的。如果你在一个函数内声明了一个带有var的变量,它与同名的全局变量是* * *不同。如果你没有用var声明一个变量,则暗示它是全局的,不管它是否在函数之外声明。 – Matt 2010-03-25 15:25:06

+0

是的,这是我的问题,我混淆了变量,因为我在函数内再次声明它,谢谢。 – Choy 2010-03-25 15:27:04

+0

在这个例子中,你不需要'返回颜色;','selectColor()'函数只需设置全局变量而不是返回结果。 对于这样简单的事情来说很好,但是如果您在设置全局变量之前需要使用变量,我会将颜色保留为局部变量并返回结果。 – Ben 2010-03-25 15:29:34

2
var color = ""; 

function selectColor() { 
    var colors = ["blue","red","green","yellow"]; 
    var color = colors[0]; 
    return color; 
} 

window.onload = function() { 
    color = selectColor(); 
    alert(color); 
} 
+0

这种方法的工作原理也是如此,谢谢。 – Choy 2010-03-25 15:27:38

0

应答对E-环你的问题:

var color = ""; 

function selectColor() { 
    var colors = ["blue","red","green","yellow"]; 
    color = colors[0]; 
} 

window.onload = function() { 
    selectColor(); 
    alert(color); 
} 
  • var关键字创建内部selectColor一个局部变量();你不想那样。
  • return语句不是必需的;你不捕获它。

在任何情况下,在这个确切例如它会是清洁要做到这一点:

var color = ""; 

function selectColor() { 
    var colors = ["blue","red","green","yellow"]; 
    return colors[0]; 
} 

window.onload = function() { 
    color = selectColor(); 
    alert(color); 
} 
相关问题