2010-03-25 8 views
0

Je suis sûr que c'est vraiment simple et que je dessine un blanc géant, mais comment définir le résultat d'une fonction comme une variable globale?Comment définir le résultat de la fonction comme variable globale

exemple, je veux mettre la première « couleur » dans le tableau « couleurs » comme variable globale « couleur » (je sais que l'exemple ne fait pas beaucoup de sens pratique, mais il est juste pour illustrer ma question):

var color = ""; 

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

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

Répondre

5

Il devrait travailler pour vous si vous supprimez la déclaration var de color dans la fonction selectColor(), comme ceci:

var color = ""; 

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

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

Point ajouté: la portée de la variable JavaScript est basée sur les fonctions. Si vous déclarez une variable avec var dans une fonction, elle est * different * d'une variable globale du même nom. Si vous ne déclarez pas de variable avec var, il est implicite d'être global, qu'il ait été déclaré en dehors de la fonction ou non. – Matt

+0

Ouais, c'était mon problème, je confondais les variables parce que je l'ai déclaré à nouveau dans la fonction, merci. – Choy

+0

Dans cet exemple, vous n'avez pas besoin de 'return color;', la fonction 'selectColor()' ne ferait que définir la variable globale au lieu de renvoyer le résultat. Fin pour quelque chose de simple comme ceci, mais si vous devez travailler avec la variable avant de la définir globalement, je laisserais la couleur comme variable locale et retournerais le résultat. – Ben

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

cette méthode fonctionne aussi, merci. – Choy

0

Answ eRing à votre question:

var color = ""; 

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

window.onload = function() { 
    selectColor(); 
    alert(color); 
} 
  • Le mot-clé var crée une variable locale à l'intérieur selectColor(); tu ne veux pas ça.
  • L'instruction return n'est pas nécessaire; vous ne le capturez pas.

Dans tous les cas, dans cet exemple précis, il serait plus propre de le faire:

var color = ""; 

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

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