[JavaScript] variables gloables non reconnues

Bonjour,

le résultat c'est que sum1, sum2, sum3 et sum4 se voient comme non définies ! Pourtant, le tableau qui les contient est global !! Qui peut me débloquer ?
<script type="text/javascript">
function f(x,sum,y)
{
 sum=y; sum*=x;
 if(x>1) 
 	{
	 x--;f(x,t[5-x],1);
	}
 else x++;
 document.write(sum1+sum2+sum3+sum4+'<br>');
}
z=4;
var t=new Array();
for (i=2;i<5;i++) t[i]="sum"+i;
f(z,'sum1',1);
</script>


4 réponses

  • Votes
  • Date
  • Date décroissante
  1. tu as bien un tableau global "t", mais vu que ton for commence à i=2 ses deux premiers index ont une valeur "undefined": [undefined, undefined, "sum2", "sum3", "sum4"].

    dans ta fonction f, tu ne peux donc pas appeler les variables sumx car elles n'existent pas.
    1. Tu peux juste m'expliquer la finalité de ce code ? il me laisse perplexe
    2. je m'entraîne sur javascript, c'est un petit exercice de décryptage de chaîne de caractère qui se résout par des boucles simples, j'ai voulu le résoude par une fonction récursive.
      Merci pour ton aide prosthetihks.
  2. Tu peux jouer ! à condition, tu trouves le truc qui marche pas ! car j'ai rempli tout le tableau et toujours pas reconnues !
    Bon, l'énoncé : soit à deviner une chaîne de caractère composée comme suit,

    (xyz)(#)(xyz)(#)....
    où xyz sont des caractères alphanumériques et # est un caractère spécial.
    La vérification doit s'effectuer par bloc de 7 caractères !
    1. Merci ! et on fait valider ou le résultat ?
    2. ton "t" ne contient pas de variables, il contient juste des string.
    3. Vous disposez d'une chaîne de caractères générée par un rand, et que vous devriez deviner !
      Le programme doit boucler et vérifier le résultat pas quand lui semble mais après avoir mis un bloc de (xyz)(#)(xyz) : c'est une contrainte imposée par l'exercice !
      Je peux le résoudre en imbriquant plusieurs for mais je préfère la méthode récursive.
  3. Bah, je simplifie encore le problème, je veux afficher d1 qui doit être 3

    function f(d) 
    { 
     d=3; alert (d1); 
    } 
    
    var d1; 
    f(d1); 
    
    

    ce programme ne le permet pas. Des idées ?
    1. Le passage de variable par référence est un peu tordu en javascript.

      <script>
      function f(d){ 
        d.value=3; alert (d1.value); 
      } 
      
      var d1 = {}; 
      f(d1); 
      
      </script>