2009-07-22 7 views
6

Comment procéder?Utilisation d'une variable globale en javascript

Mon code est quelque chose comme ceci:

var number = null; 

function playSong(artist,title,song,id) 
{ 
    alert('old number was: '+[number]+''); 


    var number = '10'; 

    alert(''+[number]+''); 
} 

La première alerte revient toujours « ancien numéro était: » et non 10. Si pas revenir 10 sur les deux alertes au deuxième appel de fonction?

+0

Bon sang YA'LL! Merci pour toutes les réponses si vite. – ian

+1

Pourquoi écrivez-vous alert ('l'ancien numéro était:' + [numéro] + ''); et non alert ('l'ancien numéro était:' + numéro); Parce qu'il alertera un tableau avec un élément à l'intérieur, pas l'article (nombre) –

+0

Hmmm dunno mais cela fonctionne. Je ne pense pas qu'il cherchera un tableau parce que je conjointe un espace vide sur le côté droit + ''; ou peut-être pas je ne sais pas. – ian

Répondre

15

En utilisant var lors du réglage de nombre = « 10 », vous déclarez number comme une variable locale à chaque fois. Essayez ceci:

var number = null; 

function playSong(artist,title,song,id) 
{ 
    alert('old number was: '+[number]+''); 


    number = '10'; 

    alert(''+[number]+''); 
} 
+0

Comment accéder ensuite à cette variable sur le site de la fonction playSong et obtenir la valeur 10? – johnsnails

+0

@johnsnails La variable est déclarée en dehors de la fonction, donc quand assigner number = 10 c'est réellement la variable globale qui est référée mais si nous utilisons var number = '10' dans la fonction side alors elle aura une portée locale, nous n'obtiendrons pas la valeur en dehors de la fonction. –

11

Supprimer le var devant le numéro de votre fonction. Vous créez une variable locale par

var number = 10; 

ce que vous avez besoin est juste

number = 10; 
3

Le problème est que vous déclarer une nouvelle variable nommée number à l'intérieur de la fonction. Cette nouvelle variable masque la variable globale number, de sorte que la ligne number = 10 affecte uniquement cette nouvelle variable locale. Vous devez supprimer le mot-clé var de var number = 10.

1

Comme dans C, vous devez définir votre variable en dehors de la fonction/méthode pour la rendre globale.

var number = 0; 

function playSong(artist,title,song,id) 
{ 
    alert('old number was: '+[number]+''); 
    number = '10'; 
    alert(''+[number]+''); 
} 
+0

Il est rassurant de voir la même réponse publiée dans la même minute. –

+2

En fait, toute définition sans 'var' sera une variable globale, indépendamment de l'endroit où elle est définie. Javascript peut être effrayant. –

+0

Vous apprenez quelque chose de nouveau chaque jour. –

1

Vous pouvez également y accéder dans n'importe quelle fonction comme window.number, après avoir enlevé var inside.

0

Laissez-moi vous expliquer en détail, à déclarer variable globale et variable locale en javascript

var firstNumber=5;//local variable 
secondNumber=10; //global variable or window object 

Lorsque votre programme est comme ça

var number =1; 
function playSong() { 
    alert(number); 
    var number =2; 
    alert(number); 
} 

Comme par le compilateur JavaScript toutes les déclarations/d'initialisation de la variable va passer au sommet de ce concept est appelé Hoisting. Lien: https://www.w3schools.com/js/js_hoisting.asp

Selon le programme du compilateur exécutera comme

var number; //Declaration will move to top always in Javascript 
number=1; 
function playSong() { 
    var number; 
    alert(number); //output : undefied - This is local variable inside the function 
    number =2; 
    alert(number); // output : 2 
} 

Si vous avez besoin d'accéder à la variable globale dans l'utilisation de la fonction window.number

var number =1; 
function playSong() { 
    var number =2; 
    alert(window.number); // output : 1 -From Global variable 
    alert(number); // output : 2 -From local variable 
} 
Questions connexes