2010-05-19 8 views
7

Je cherche à passer une fonction anonyme à une autre fonction, mais elle ne semble pas fonctionner comme je le souhaite.Comment passer et appeler une fonction en argument en Javascript?

J'ai joint le code, je pense que cela vous donnerait une meilleure idée de ce que je devrais faire. Comment puis-je réussir à passer une fonction en tant qu'argument, puis l'invoquer?

<script language="javascript" type="text/javascript"> 
function do_work(success) { 
    success; 
} 

do_work(function() { 
    alert("hello") 
}); 

</script> 
+3

L'attribut 'language' est [obsolète] (http://www.w3.org/TR/REC-html40/ interact/scripts.html # edef-SCRIPT). –

+0

attends! cela signifie-t-il plus de vbscript? ;)) –

Répondre

14

Vous devez appeler réellement la fonction:

function do_work(success) { 
    success(); 
} 
+0

Merci! Je savais que ça devait être quelque chose de simple. –

0

La variable succès est une "instance" de Function, vous pouvez également appeler apply(), qui vous permettra pour redéfinir la portée:

function do_work(success) { 
    var foo = { 
     bar : "bat"   
    } 
    success.apply(foo); 
} 

do_work(function() { 
alert(this.bar) 
}); 
Questions connexes