2009-04-15 6 views
5

Si incluyo un archivo JavaScript en mi página HTML, ¿las variables declaradas en mi archivo JavaScript también tienen alcance en mis etiquetas <script /> en mi página HTML? Por ejemplo, en mi archivo JS incluido, declaro una variable:HTML JavaScript Incluir alcance de variable de archivo

var myVar = "test"; 

A continuación, dentro de mi página HTML, lo que será este producto (si es después de mi incluyen etiqueta script)?

alert(myVar); 

Respuesta

14

Si se declara la variable fuera de cualquier función como

var myVar = 'test'; 

o al cualquier ubicación que

myVar = 'test'; 

o

window.myVar = 'test'; 

Debe añadirse al objeto global (ventana) y estar disponible en cualquier lugar,

alert(myVar); 

o

alert(window.myVar); 

o

alert(window['myVar']); 
+0

¿Incluso con un archivo JavaScript incluido? –

+0

Sí. Pruébelo: test.html: Test.js: prueba var = 'Hola!'; pon esos dos archivos en la misma carpeta y carga la página html. ¡funciona! –

+1

hmm que no se formata muy bien, pero espero que entiendas la idea. –

3

Se producirá una alerta que contiene "prueba" .

Todas las variables declaradas en el nivel superior en JavaScript comparten el mismo ámbito. Si desea utilizar variables en un archivo que no va a entrar en conflicto con otro, entonces se puede utilizar una función anónima a introducir un nuevo ámbito:

var myVar = "something else"; 
(function() {var myVar = "test"; alert(myVar)})(); 
alert(myVar); 

edición: Como BYK señala, se puede ampliar esta en algo que se asemeja a un espacio de nombres hecho y derecho, mediante la asignación de un objeto literal:

var MyNamespace = (function() { 
    var myVar = "something"; 
    return { alert: function() { alert(myVar) }, 
      setVar: function(value) { myVar = value } } 
})(); 
+0

También puede usar un "espacio de nombres" que simplemente es un Objeto estático para agrupar sus variables y funciones. – BYK

1

Cuando se declara una variable o una función en el código, que está creando una propiedad de window. Considere estos ejemplos:

var a = 'Cow'; 
alert(window.a); // Cow 
alert(this.a); // Cow 
alert(a); // Cow 

Si se declara una variable dentro de una función, la variable no será accesible desde fuera de ella a menos que agregue al objeto window:

function lalala() { 
    alert(a); // still Cow 
    a = 'Pig'; // We're tired of cows by now. Let's make it a pig. 
    var b = 'Sheep'; 
} 
lalala(); 
alert(a); // Pig 
alert(b); // undefined, since b is declared in the lalala scope 

lo tanto, su ejemplo alertaría test.

Cuestiones relacionadas