(la creación de una pregunta separada después de los comentarios de esta: Javascript redeclared global variable overrides old value)redeclarada Javascript anulaciones de variables antiguo valor global en IE
Estoy creando un ámbito global variable usando la notación de corchetes y asignarle un valor dentro de archivo de una externa js .
En otro archivo js declaro una var con el mismo nombre que acabo de crear. Tenga en cuenta que no estoy asignando un valor. Dado que este es un redeclaración de la misma variable el valor anterior no debe ser anulado como se describe aquí: http://www.w3schools.com/js/js_variables.asp
crear 2 archivos javascript con el siguiente contenido: script1
//create global variable with square bracket notation
window['y'] = 'old';
SCRIPT2
//redeclaration of the same variable
var y;
if (!y) y = 'new';
alert(y); //shows New instead of Old in IE
Incluya estos 2 archivos en su archivo html
<html>
<head></head>
<body>
<script type="text/javascript" src="my.js"></script>
<script type="text/javascript" src="my2.js"></script>
</body>
</html>
Al abrir esta página en Firefox y las alertas de Chrome 'viejo', que es el comportamiento esperado. Sin embargo, en IE 8 la página realmente alertará 'nuevo'
¿Alguna idea sobre por qué sucede esto en IE?
¿Qué sucede si pone todo el código en línea en el archivo HTML? Me da el mismo resultado (antiguo) en Firefox 3.5.8, Chrome 5.0.342.7 y Konqueror 4.3.5. Los resultados para otros navegadores serían útiles. –
Si coloca todo el código en un archivo, se produciría un enganche y es probable que el problema no esté presente. –
Sí, si pones todo el código en un solo lugar, la alerta muestra 'viejo' en todos los navegadores –