2010-07-12 7 views
-1

J'ai une balise script avec « A » variable et a été initialisées comme 16 mais quand je l'utilise alerte sur IE en cas onclick, je recevais undefine plutôt que 16.Javascript variable globale

Est-ce le problème dans IE 6?

par exemple.

<script type="text/javascript"> 
var A =16; 
</script> 

<a href="" onclick="javascript:alert(A);">undefine</a> 
+1

Pourriez-vous poster un exemple de code qui produit le problème? –

Répondre

3

Je serais prêt à parier là-dessus causé par une légère confusion ...

Etant donné que var mettre en face d'une variable met cette variable dans la portée locale uniquement en Javascript, et une delcaration variable sans elle (a = 16) est global.

function test() { 
    a = 16; 
    var b = 16; 

} 
test(); 

alert(a); # alerts 16 
alert(b); # throws error, b is undefined 
+0

Je suis un peu confus quant à pourquoi exactement cela a été voté. – corrodedmonkee

+0

Juste pour ajouter, il suffit de regarder. Ce que j'ai dit est correct, à l'exception que si j'avais var c = 16, et l'alerte correspondante dans test() ça aurait marché. Indépendamment, cela ressemble à un problème de portée. – corrodedmonkee

+0

+ 1 pour des informations utiles en essayant de répondre à une question plutôt vague (je ne sais pas pourquoi vous avez été rejeté non plus). Cela pourrait bien être une question de portée; ça pourrait aussi être une faute de frappe! ;) – MrWhite

-1

Vous devez poster un exemple de ce que vous parlez, mais le problème est peut-être dans l'endroit où votre balise de script est et où vous appelez la variable à partir.

+0

Mettez des commentaires comme celui-ci sous la question, pas comme réponse. –

+0

@Gert G N'ai-je pas donné au moins une demi-réponse. :) – qw3n

+0

Un très vague. Et pour mémoire ... je ne vous ai pas donné de -1. –

0

Ceci est juste un concept simple de variable globale et locale .. lorsque vous exécutez la méthode la variable qui est globale a obtenu sa valeur et la variable qui est locale a également obtenu la valeur, mais son cycle de vie expire le sortir de la fonction, donc il jette l'erreur d'être indéfini