[JavaScript] variables gloables non reconnues

Nymphomaniaque Messages postés 63 Statut Membre -  
prosthetiks Messages postés 1309 Statut Membre -
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

  1. prosthetiks Messages postés 1309 Statut Membre 431
     
    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.
    0
    1. prosthetiks Messages postés 1309 Statut Membre 431
       
      Tu peux juste m'expliquer la finalité de ce code ? il me laisse perplexe
      0
    2. Nymphomaniaque Messages postés 63 Statut Membre 4
       
      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.
      0
  2. prosthetiks Messages postés 1309 Statut Membre 431
     
    J'peux jouer moi aussi ? il est ou l'énoncé ? =)
    0
  3. Nymphomaniaque Messages postés 63 Statut Membre 4
     
    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 !
    0
    1. prosthetiks Messages postés 1309 Statut Membre 431
       
      Merci ! et on fait valider ou le résultat ?
      0
    2. prosthetiks Messages postés 1309 Statut Membre 431
       
      ton "t" ne contient pas de variables, il contient juste des string.
      0
    3. Nymphomaniaque Messages postés 63 Statut Membre 4
       
      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.
      0
  4. Nymphomaniaque Messages postés 63 Statut Membre 4
     
    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 ?
    0
    1. prosthetiks Messages postés 1309 Statut Membre 431
       
      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>
      0