2009-07-11 5 views

Répondre

3

Vous lisez la documentation de la méthode que vous appelez (la méthode ready dans ce cas) et de voir quel genre de valeur qu'il attend.

S'il attend une fonction, utilisez votre premier exemple.

S'il attend un objet jQuery *, utilisez votre deuxième exemple (puisque la valeur de retour de la méthode addClass est un objet jQuery).

* Je suppose que vous utilisez jQuery car je pense que c'est la seule bibliothèque qui a des fonctions nommées comme ça. Je peux me tromper, $ is a stupid name for a function.

+0

lol, la chose est un peu pédant. – xenon

+1

Je ne suis pas d'accord avec votre "$ est un nom stupide pour une fonction." entrée de blog, mais le lien "commentaire" mène à votre page de contact, je l'écris ici: D'où vient le premier point, et pourquoi est-ce ainsi? Votre troisième point compte pour chaque nom de fonction, pas seulement $. Et dans jquery, la fonction $ n'est pas seulement pour les sélecteurs, mais aussi un raccourci pour document.ready, comme vous pouvez le lire ici: http://docs.jquery.com/Core/jQuery#callback –

+0

La citation est tirée du ECMAScript spécification. Les noms de fonctions donnent généralement une idée de ce qu'ils font - un signe du dollar ne le fait pas. Et bien - la fonction est surchargée, ce qui rend encore plus obscur. – Quentin

0

Si la fonction accepte une fonction en tant que paramètre, le code 2 ne fonctionnera pas, parce que

$('.poem-stanza').addClass('highlight'); 

n'est pas une définition de fonction (il est une déclaration)

Pour créer un objet qui représente une fonction , l'une des syntaxes suivantes doivent être utilisées:

function myFunc() { 
} 

ou

var myFunc = function() { 
} 

ou

var myFunc = new Function("...javascript code..."); 

Après une des définitions ci-dessus, myFunc tiendra un objet représentant une fonction.

0

Heh, voilà comment il est: D

Non, sérieusement, quand vous devez faire quelque chose à l'intérieur prêt(); ou des méthodes similaires, vous utilisez un. fonction. D'autres méthodes acceptent les paramètres. Docs vous fournira des détails.

0

Comme les autres gars l'ont dit, vous devez consulter la documentation pour voir quel type de paramètres la fonction accepte. Cependant, la partie importante est la suivante: Si vous avez une instruction, elle est exécutée lorsque l'interpréteur la rencontre. Si vous définissez une fonction et la transmettez à la fonction ready, la fonction ready décide quand l'exécuter. Dans ce cas particulier, lorsque le document est prêt. Un autre exemple est setTimeout qui attend une fonction et un nombre de millisecondes comme paramètres.

La règle est la suivante: Lorsque vous voulez passer du code à une autre fonction, vous devez l'insérer dans une fonction. Si vous utilisez une instruction (déballée), elle sera exécutée et le résultat est transmis à la fonction.

0

Si vous avez besoin d'une fonction de rappel, utilisez le mot-clé de fonction. Lorsque vous utilisez des méthodes telles que ready et click, vous ne voulez pas que le code soit exécuté lorsque vous configurez l'événement, mais lorsque l'événement se produit, vous avez besoin d'une fonction de rappel. L'utilisation d'une fonction anonyme est similaire à l'utilisation d'une fonction nommée que vous avez définie plus tôt.Dans un exemple comme celui-ci, il est plus facile de suivre ce qui se passe:

function onReady() { 
    $('.poem-stanza').addClass('highlight'); 
} 

$(document).ready(onReady); 
Questions connexes