[JavaScript] variables gloables non reconnues

Fermé
Nymphomaniaque Messages postés 55 Date d'inscription mercredi 22 juillet 2009 Statut Membre Dernière intervention 14 octobre 2012 - 16 janv. 2012 à 17:55
prosthetiks Messages postés 1189 Date d'inscription dimanche 7 octobre 2007 Statut Membre Dernière intervention 12 juin 2020 - 16 janv. 2012 à 20:34
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>


A voir également:

4 réponses

prosthetiks Messages postés 1189 Date d'inscription dimanche 7 octobre 2007 Statut Membre Dernière intervention 12 juin 2020 431
16 janv. 2012 à 18:45
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
prosthetiks Messages postés 1189 Date d'inscription dimanche 7 octobre 2007 Statut Membre Dernière intervention 12 juin 2020 431
16 janv. 2012 à 18:53
Tu peux juste m'expliquer la finalité de ce code ? il me laisse perplexe
0
Nymphomaniaque Messages postés 55 Date d'inscription mercredi 22 juillet 2009 Statut Membre Dernière intervention 14 octobre 2012 4
16 janv. 2012 à 19:29
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
prosthetiks Messages postés 1189 Date d'inscription dimanche 7 octobre 2007 Statut Membre Dernière intervention 12 juin 2020 431
16 janv. 2012 à 19:35
J'peux jouer moi aussi ? il est ou l'énoncé ? =)
0
Nymphomaniaque Messages postés 55 Date d'inscription mercredi 22 juillet 2009 Statut Membre Dernière intervention 14 octobre 2012 4
16 janv. 2012 à 19:48
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
prosthetiks Messages postés 1189 Date d'inscription dimanche 7 octobre 2007 Statut Membre Dernière intervention 12 juin 2020 431
16 janv. 2012 à 20:01
Merci ! et on fait valider ou le résultat ?
0
prosthetiks Messages postés 1189 Date d'inscription dimanche 7 octobre 2007 Statut Membre Dernière intervention 12 juin 2020 431
16 janv. 2012 à 20:13
ton "t" ne contient pas de variables, il contient juste des string.
0
Nymphomaniaque Messages postés 55 Date d'inscription mercredi 22 juillet 2009 Statut Membre Dernière intervention 14 octobre 2012 4
16 janv. 2012 à 20:15
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
Nymphomaniaque Messages postés 55 Date d'inscription mercredi 22 juillet 2009 Statut Membre Dernière intervention 14 octobre 2012 4
Modifié par Nymphomaniaque le 16/01/2012 à 20:17
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
prosthetiks Messages postés 1189 Date d'inscription dimanche 7 octobre 2007 Statut Membre Dernière intervention 12 juin 2020 431
Modifié par prosthetiks le 16/01/2012 à 20:35
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