(créer une autre question après les commentaires sur ce point: Javascript redeclared global variable overrides old value)redéclarée javascript overrides variable globale ancienne valeur dans IE
Je crée une variable SCOPED globalement en utilisant la notation de support carré et en lui attribuant une valeur à l'intérieur d'un fichier externe .
Dans un autre fichier js, je déclare un var avec le même nom que celui que je viens de créer ci-dessus. Remarque Je n'attribue pas de valeur. Comme il s'agit d'une redéclaration de la même variable la valeur ancienne ne doit pas être surchargée comme décrit ici: http://www.w3schools.com/js/js_variables.asp
Créer 2 fichiers javascript avec le contenu suivant: 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
Inclut ces 2 fichiers dans votre fichier html
<html>
<head></head>
<body>
<script type="text/javascript" src="my.js"></script>
<script type="text/javascript" src="my2.js"></script>
</body>
</html>
L'ouverture de cette page dans Firefox et les alertes Chrome "vieux" qui est le comportement attendu. Cependant, dans IE 8, la page va effectivement alerter «nouveau»
Des idées sur pourquoi cela se produit sur IE?
Que se passe-t-il si vous mettez tout le code en ligne dans le fichier HTML? Il me donne le même résultat (ancien) pour Firefox 3.5.8, Chrome 5.0.342.7 et Konqueror 4.3.5. Les résultats pour les autres navigateurs seraient utiles. –
Si vous mettez tout le code dans un fichier, le levage se produira et le problème ne sera probablement pas présent. –
Oui, si vous mettez tout le code dans un seul endroit l'alerte montre «vieux» sur tous les navigateurs –