Attention !!

Nous avons vu dans le premier paragraphe, qu'un des aspects de JavaScript en ce qui concerne les déclarations et typage de variables était d'autoriser la redéfinition et/ou le transtypage.

Si l'on considère que tous les scripts d'un document sont autant de parties d'un programme JavaScript contenu dans celui-ci, cela risque de provoquer des erreurs si l'on n'y prend garde.

Vous allez charger la page suivante :

<head>
....
<script language="JavaScript">
  var entier = "0123";
  i = entier + "456";
  entier = i * 1;
  i = entier/2;
  function Affichage_i() {
    alert("La valeur de i est " + i);
  }
</script>
</head>

<body... onload="Affichage_i()">
....
<script language="JavaScript">
  var i = "\"inconnue\" !!!";
</script>
....
</body>

Le premier script qui apparaît entre les balises <head> et </head>, reprend l'exemple vu dans le paragraphe 1, illustrant redéfinitions et transtypage. Il contient aussi une fonction Affichage_i qui a pour effet d'afficher la valeur de la variable i dans une fenêtre.

La balise <body> prévoit, comme nous l'avons déjà vu dans le paragraphe 4, de prendre en compte l'événement "fin de chargement" pour exécuter alors la fonction Affichage_i.

Dans le corps lui-même, un nouveau script redéfinit la variable i...

Que croyez-vous qu'il va se passer ?

La fonction Affichage_i est définie dans le premier script !
Par ailleurs, la redéfinition de la variable i apparaît dans un autre script qui se situe après l'appel de Affichage_i !!!

On serait donc en droit de penser que l'on va bien obtenir l'affichage de 61728...

Vérifiez vous-même en cliquant sur cette icône :