Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1772 connectés 

  FORUM HardWare.fr
  Programmation
  HTML/CSS

  Javascript: Fonction en paramètre

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Javascript: Fonction en paramètre

n°1446508
paowz
Posté le 22-09-2006 à 22:35:24  profilanswer
 

Bonjour,
 
Comment doit-on écrire la fonction ma_fonction(fonc) pour qu'elle puisse prendre une fonction en paramètre ?
 
Exemple: j'appelle

Code :
  1. ma_fonction(autre_fonction)

et je voudrais que dans le code de ma_fonction() soit appelée autre_fonction() ?
 
Merci bien. :)

mood
Publicité
Posté le 22-09-2006 à 22:35:24  profilanswer
 

n°1446536
mIRROR
Chevreuillobolchévik
Posté le 23-09-2006 à 03:00:17  profilanswer
 

non tu mets pas une fonction en parametre
dis nous plutot ce que tu veux faire parce que ca semble n avoir aucun sens exposé ainsi :/

n°1446539
gatsu35
Blablaté par Harko
Posté le 23-09-2006 à 05:07:08  profilanswer
 

Code :
  1. function f1(param1, param2) {
  2. blabla;
  3. }
  4. function f2(f) {
  5.   var i = f("val1", "val2" );
  6. alert(i);
  7. }

n°1446569
gooopil
pfiew
Posté le 23-09-2006 à 13:04:58  profilanswer
 

Cela dit, c'est possible avec eval() de donner une fonction en paramètre, mais c'est pas bien recommendable :/

n°1446572
mIRROR
Chevreuillobolchévik
Posté le 23-09-2006 à 13:09:54  profilanswer
 

tiens en php aussi on dit qu eval c est le mal et j ai jamais compris pourquoi en fait :$

n°1446574
gatsu35
Blablaté par Harko
Posté le 23-09-2006 à 13:12:42  profilanswer
 

gooopil a écrit :

Cela dit, c'est possible avec eval() de donner une fonction en paramètre, mais c'est pas bien recommendable :/


[:natas] Tu as vu ce que j'ai posté ???
J'ai passé une fonction en paramètre

n°1446576
gooopil
pfiew
Posté le 23-09-2006 à 13:18:09  profilanswer
 

gatsu35 a écrit :

[:natas] Tu as vu ce que j'ai posté ???
J'ai passé une fonction en paramètre


 
Oui j'ai vu ton code, et ça marche ce truc ?
Si tu fais f2("f1" ) ? ou f2(f1) ?

Message cité 1 fois
Message édité par gooopil le 23-09-2006 à 13:19:40
n°1446577
mIRROR
Chevreuillobolchévik
Posté le 23-09-2006 à 13:26:04  profilanswer
 

ah c est un peu la technique du window.onload = mafonction;  
j avais pas compris a la premiere lecture
 
sinon pourquoi c est mal eval ? :o

n°1446579
gatsu35
Blablaté par Harko
Posté le 23-09-2006 à 13:31:26  profilanswer
 

Code :
  1. function fuckYou(param1, f) {
  2.    f(param1);
  3. }
  4. function f(param) {
  5.   alert(param);
  6. }


tu peux meme faire comme ça :  

Code :
  1. function fuckYou(param1, function(param) {
  2.     alert(param);
  3.   }
  4. ) {
  5.    f(param1);
  6. }


 
Vas y teste. là on passe une reference de fonction et donc ca marche. Le eval c'est crade et je vois pas comment vous voulez l'utiliser dans ce cas.
 
Le eval c'est seulement utile quand tu veux qu'un utilisateur tape du Javascript dans un champ et que tu veux l'executer.
sinon aucun intérêt et ça relève tu codage de porc.

Message cité 1 fois
Message édité par gatsu35 le 23-09-2006 à 13:32:11
n°1446584
gooopil
pfiew
Posté le 23-09-2006 à 13:46:53  profilanswer
 

gatsu35 a écrit :

Code :
  1. function fuckYou(param1, f) {
  2.    f(param1);
  3. }
  4. function f(param) {
  5.   alert(param);
  6. }


tu peux meme faire comme ça :  

Code :
  1. function fuckYou(param1, function(param) {
  2.     alert(param);
  3.   }
  4. ) {
  5.    f(param1);
  6. }


 
Vas y teste. là on passe une reference de fonction et donc ca marche. Le eval c'est crade et je vois pas comment vous voulez l'utiliser dans ce cas.


J'ai testé entre temps, je connaissais pas cette possibilité, c'est interresssant :)

gatsu35 a écrit :


Le eval c'est seulement utile quand tu veux qu'un utilisateur tape du Javascript dans un champ et que tu veux l'executer.
sinon aucun intérêt et ça relève tu codage de porc.


On est entièrement d'accord la dessus !

mood
Publicité
Posté le 23-09-2006 à 13:46:53  profilanswer
 

n°1446591
mIRROR
Chevreuillobolchévik
Posté le 23-09-2006 à 14:10:52  profilanswer
 

ha j aime bien le deuxieme exemple
donc c est possible désolé paowz :D

n°1446595
masklinn
í dag viðrar vel til loftárása
Posté le 23-09-2006 à 14:26:48  profilanswer
 

gooopil a écrit :

Cela dit, c'est possible avec eval() de donner une fonction en paramètre, mais c'est pas bien recommendable :/


[:vomi]

gooopil a écrit :

Oui j'ai vu ton code, et ça marche ce truc ?
Si tu fais f2("f1" ) ? ou f2(f1) ?


f2(f1).
 
En javascript (comme dans pas mal de langages, le PHP n'étant pas un langage mais une merde en bâtons) une fonction est un objet comme un autre. C'est le principe "function as first-class object" qui existe dans tous les langages fonctionnels, et un certain nombre de langage impératifs/objets (le C a les function-pointers, Python et JS ont des objets fonctions, Ruby et Smalltalk ont des "blocks" qui sont fondamentalement des fonctions avec une syntaxe spécifique, ...).
 
Dans ces langages, une fonction peut être utilisée comme argument, comme valeur de retour d'une autre fonction, ou les deux. Les fonctions manipulant d'autres fonctions sont appelées "high-order functions" (parce qu'elles manipulent des manipulateurs d'objets au lieu de ne manipuler que des objets), et leur utilisation "higher-order programming".  
 
En JS, écrire

Code :
  1. function foo() {
  2.    // blabla
  3. }


est parfaitement équivalent à

Code :
  1. var foo = function () {
  2.    // blabla
  3. }


Et `foo` est appelé de la même manière dans les deux cas:

Code :
  1. foo()


mIRROR a écrit :

sinon pourquoi c est mal eval ? :o


Parce que c'est lent, parce que c'est habituellement inutile, et parce que ça pose un risque de code-injection.

Message cité 1 fois
Message édité par masklinn le 23-09-2006 à 15:47:07

---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody
n°1446597
mIRROR
Chevreuillobolchévik
Posté le 23-09-2006 à 14:50:35  profilanswer
 

masklinn a écrit :

En javascript une fonction est un objet comme un autre.


 
ca je commencais a le comprendre un peu genre les evenements, les prototypes toussa  
mais c est encore assez nouveau ^^
 
 

masklinn a écrit :

une fonction peut être utilisée comme [...] valeur de retour d'une autre fonction


 
tiens ca aussi c est marrant

n°1446683
paowz
Posté le 23-09-2006 à 22:34:45  profilanswer
 

Et bien merci à vous d'avoir répondu avec autant d'avis :)
 
Cordialement.  :jap:


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  HTML/CSS

  Javascript: Fonction en paramètre

 

Sujets relatifs
Changer un paramètre NLS sur Client Oracle (XP)J'aimerais modifier légérement cette fonction PHP, un peu d'aide svp
[vaguement résolu] surcharger __getattribute__[Javascript] Confirm() sur un lien
Fonction Autoopen()[Javascript] Accéder à un champ à partir d'une autre page
fonction getBytes() de java en phpDimensions d'un div en fonction de son contenu
passage d'un tableau php parametre à une fonction javascript[JavaScript] une fonction avec Object en parametre ?
Plus de sujets relatifs à : Javascript: Fonction en paramètre


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR