|
|
|
#1 (permalink) |
|
Messages: n/a
Hébergeur: |
Machaon vient de nous annoncer :
> Bonjour à tous, > > javascript permet-il l'utilisation de nom de fonction dynamique ? > Oui avec eval (mais c'est crade !) FonctionMain(UneVariable) { eval(UneVariable+'(\'titi\')'); //<== plus de problème ici } -- ______ Francis (enlever .NIPUBNISOUMIS) "Quand tout baigne, il y a forcément quelque chose qui va couler" |
|
|
|
#2 (permalink) |
|
Messages: n/a
Hébergeur: |
"Francis Spiesser" <fspiesser@despixelsetdeshommes.NIPUBNISOUMIS.ne t> a
écrit dans le message de news: mn.ec017d76f9fe1f01.2378@despixelset... BNISOUMIS.net... > Machaon vient de nous annoncer : >> Bonjour à tous, >> >> javascript permet-il l'utilisation de nom de fonction dynamique ? >> > > Oui avec eval (mais c'est crade !) > > FonctionMain(UneVariable) { > eval(UneVariable+'(\'titi\')'); //<== plus de problème ici > } Merci pour ta solution, c'est celle que j'avais fini par trouver. Mais pkoi c crade ? Machaon |
|
|
|
#3 (permalink) |
|
Messages: n/a
Hébergeur: |
Le 29/06/2007 20:05, Machaon a écrit :
>> >> Parce qu'exécuter du code généré à la volée, ça ne facilite ni le débogage >> ni la relecture. >> Un code correctement pensé et structuré devrait (normalement...) pouvoir >> se passer de ce genre de rustines. > > Et est-ce qu'un code bien pensé et strucuturé peut se passer de fonction en > appelant une autre dynamiquement ? > Si non, comment puis-je ne pas utiliser eval() ? switch (variable) { case valeur1 : fonction1(); break; case valeur2 : fonction2(); break; case valeur3 : fonction3(); break; default : fonctionD(); break; } |
|
|
|
#4 (permalink) |
|
Messages: n/a
Hébergeur: |
Machaon <jpalayodan@e-cml.org> wrote:
> "Francis Spiesser" <fspiesser@despixelsetdeshommes.NIPUBNISOUMIS.ne t> a > écrit dans le message de news: > mn.ec8c7d7639c14e81.2378@despixelset... BNISOUMIS.net... > > Machaon a émis l'idée suivante : > >> > >> Mais pkoi c crade ? > >> > > Parce qu'exécuter du code généré à la volée, ça ne facilite ni le débogage > > ni la relecture. > > Un code correctement pensé et structuré devrait (normalement...) pouvoir > > se passer de ce genre de rustines. > > Et est-ce qu'un code bien pensé et strucuturé peut se passer de fonction en > appelant une autre dynamiquement ? > Si non, comment puis-je ne pas utiliser eval() ? En précisant mieux ce que tu veux faire, si tu veux juste passer une fonction en argument, il n'y a pas de pb - surtout en javascript. Sinon si tu tiens vraiment à avoir un nom, ben... tu fais une hashtable, où tu stocke ta fonction avec le nom qui te plait. Mais grosso modo on n'a pas besoin d'éval. FiLH -- Le fondement du constat bourgeois, c'est le bon sens, c'est-à-dire une vérité qui s'arrête sur l'ordre arbitraire de celui qui la parle. Roland Barthes. http://www.filh.org |
|
|
|
#5 (permalink) |
|
Messages: n/a
Hébergeur: |
Machaon a écrit :
> "Francis Spiesser" <fspiesser@despixelsetdeshommes.NIPUBNISOUMIS.ne t> a > écrit dans le message de news: > mn.ec017d76f9fe1f01.2378@despixelset... BNISOUMIS.net... > >>Machaon vient de nous annoncer : >> >>>Bonjour à tous, >>> >>>javascript permet-il l'utilisation de nom de fonction dynamique ? >>> >> >>Oui avec eval (mais c'est crade !) >> >>FonctionMain(UneVariable) { >> eval(UneVariable+'(\'titi\')'); //<== plus de problème ici >>} > > Merci pour ta solution, c'est celle que j'avais fini par trouver. Alors changes en. Tu peux regarder mon autre post pour deux façons d'aborder le problème (nb: après vérif, la seconde fonctionne - en tous cas sous mozilla). > Mais pkoi c crade ? Difficile à mettre au point, difficile à maintenir, très vite difficile à comprendre, et potentiellement dangereux. Dans une écrasante majorité de cas, quand tu utilises eval(), c'est que soit tu ne connais pas la fonctionnalité du langage permettant de s'en passer, soit qu'il y a un problème de conception. C'est en tous cas mon expérience avec Python, et pour le moment avec Javascript aussi. |
|
|
|
#6 (permalink) |
|
Messages: n/a
Hébergeur: |
Le 30/06/2007 09:49, FiLH a écrit :
>> >> switch (variable) { >> case valeur1 : >> fonction1(); >> break; >> case valeur2 : >> fonction2(); >> break; >> case valeur3 : >> fonction3(); >> break; >> default : >> fonctionD(); >> break; >> } > > Beark ![]() Syntax error... try « break ». > a=[]; > > a["x"]=function () { alert("x");} > a["y"]=function () { alert("y");} > > a["x"](); > a["y"](); Beurk ! :-) |
|
|
|
#7 (permalink) |
|
Messages: n/a
Hébergeur: |
Olivier Miakinen <om+news@miakinen.net> wrote:
> Le 30/06/2007 09:49, FiLH a écrit : > >> > >> switch (variable) { > >> case valeur1 : > >> fonction1(); > >> break; > >> case valeur2 : > >> fonction2(); > >> break; > >> case valeur3 : > >> fonction3(); > >> break; > >> default : > >> fonctionD(); > >> break; > >> } > > > > Beark ![]() > > Syntax error... try « break ». > > > a=[]; > > > > a["x"]=function () { alert("x");} > > a["y"]=function () { alert("y");} > > > > a["x"](); > > a["y"](); > > Beurk ! :-) Non,car on peut ajouter des fonctions sans changer le code ![]() Plus dynamique... FiLH -- Le fondement du constat bourgeois, c'est le bon sens, c'est-à-dire une vérité qui s'arrête sur l'ordre arbitraire de celui qui la parle. Roland Barthes. http://www.filh.org |
|
![]() |
| Outils de la discussion | |
|
|