2009-07-22 17 views
6

¿Cómo hago esto?Usando una variable global en javascript

Mi código es algo como esto:

var number = null; 

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


    var number = '10'; 

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

La primera alerta siempre devuelve 'número antiguo era:' y no 10. En caso de que no lo devuelva 10 en ambos alertas en la segunda llamada a la función?

+0

Maldita Yall! Gracias por todas las respuestas tan rápido. – ian

+1

¿Por qué escribe alerta ('el número antiguo era:' + [número] + ''); y no alerta ('el número anterior era:' + número); Porque alertará a una matriz con un elemento dentro, no el artículo (número) –

+0

Hmmm no sé pero funciona. No creo que vaya a buscar ninguna matriz porque combino espacio vacío en el lado derecho + ''; o tal vez no lo sé. – ian

Respuesta

15

Mediante el uso de var la hora de establecer el número = '10', que está declarando number como una variable local cada vez. Prueba esto:

var number = null; 

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


    number = '10'; 

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

¿Cómo accedes a esa variable fuera del sitio la función playSong y obtienes el valor 10? – johnsnails

+0

@johnsnails La variable se declara fuera de la función, por lo que cuando se asigna number = 10 es la variable global referida pero si usamos var number = '10' en la función lateral entonces tendrá alcance local, no obtendremos el valor 10 fuera de la función. –

11

Elimine la var en frente del número en su función. Va a crear una variable local por

var number = 10; 

lo que necesita es sólo

number = 10; 
3

El problema es que se está declarando una nueva variable denominada number dentro de la función. Esta nueva variable oculta la variable global number, por lo que la línea number = 10 asigna solo esta nueva variable local.

Debe eliminar la palabra clave var de var number = 10.

1

Al igual que en C, necesita definir su variable fuera de la función/método para hacerlo global.

var number = 0; 

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

Es tranquilizador ver la misma respuesta publicada en el mismo minuto. –

+2

En realidad, cualquier definición sin 'var' será una variable global, independientemente de dónde esté definida. Javascript puede ser aterrador. –

+0

Aprende algo nuevo todos los días. –

1

También puede acceder a él en cualquier función como window.number, después de eliminar var dentro de la función.

0

Voy a explicar en detalle, a la declaración de variables globales y variables locales en javascript

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

Cuando el programa es como esto

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

Según el compilador JavaScript todas Declaración/inicialización de la variable se moverá a la parte superior de este concepto se llama elevación. Enlace: https://www.w3schools.com/js/js_hoisting.asp

De acuerdo con el programa compilador ejecutará como

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 necesita acceder a la variable global dentro de la función de uso 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 
} 
Cuestiones relacionadas