2009-07-22 28 views
6

Come posso fare?Utilizzo di una variabile globale in javascript

Il mio codice è qualcosa di simile:

var number = null; 

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


    var number = '10'; 

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

Il primo allarme restituisce sempre 'vecchio numero era:' e non 10. Non dovrebbe restituire 10 su entrambe le segnalazioni sulla seconda chiamata di funzione?

+0

Dannazione ya! Grazie per tutte le risposte così veloci. – ian

+1

Perché scrivi l'avviso ('vecchio numero era:' + [numero] + ''); e non avviso ('vecchio numero era:' + numero); Perché avviserà un array con un elemento all'interno, non l'articolo (numero) –

+0

Hmmm non lo so ma funziona. Non penso che cercherò alcun array perché mi unisco allo spazio vuoto sul lato destro + ''; o forse non lo so. – ian

risposta

15

Utilizzando var quando si imposta il numero = '10', si dichiara number come variabile locale ogni volta. Prova questo:

var number = null; 

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


    number = '10'; 

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

Come si accede a tale variabile fuori dal sito la funzione playSong e si ottiene il valore 10? – johnsnails

+0

@johnsnails La variabile viene dichiarata all'esterno della funzione, quindi quando assegna numero = 10 in realtà viene riferita la variabile globale ma se usiamo var number = '10' nella funzione side allora avrà scope locale, non otterremo il valore 10 al di fuori della funzione. –

11

Rimuovere la var davanti al numero nella funzione. Si sta creando una variabile locale

var number = 10; 

quello che ti serve è solo

number = 10; 
3

Il problema è che si sta dichiarando una nuova variabile chiamata number all'interno della funzione. Questa nuova variabile nasconde la variabile globale number, quindi la linea number = 10 assegna solo a questa nuova variabile locale.

È necessario rimuovere la parola chiave var da var number = 10.

1

Come in C, è necessario definire la variabile al di fuori della funzione/metodo per renderla globale.

var number = 0; 

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

È rassicurante vedere la stessa risposta pubblicata nello stesso minuto. –

+2

In realtà, qualsiasi definizione senza 'var' sarà una variabile globale, indipendentemente da dove è definita. Javascript può essere spaventoso. –

+0

Impara qualcosa di nuovo ogni giorno. –

1

È inoltre possibile accedervi in ​​qualsiasi funzione come window.number, dopo aver rimosso var all'interno della funzione.

0

Mi spiego nel dettaglio, a dichiarare variabile globale e variabile locale in javascript

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

Quando il programma è come questo

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

Come per il compilatore JavaScript tutte dichiarazione/inizializzazione delle variabili si sposterà in alto questo concetto è chiamato sollevamento. Link: https://www.w3schools.com/js/js_hoisting.asp

Come per il programma compilatore eseguirà come

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 
} 

Se è necessario accedere alla variabile globale all'interno della funzione di utilizzo 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 
} 
Problemi correlati