Déclaration de fonction en CoffeeScript

Je remarque que dans CoffeeScript, si je définir une fonction à l'aide de:

a = (c) -> c=1

Je ne peux faire le expression de fonction:

var a;
a = function(c) {
    return c = 1;
};

Mais, personnellement, j'utilise souvent déclaration de fonction,par exemple:

function a(c) {
    return c = 1;
}

J'utilise la première forme, mais je me demandais si il existe un moyen en CoffeeScript la génération d'une déclaration de fonction. Si il n'y a aucun moyen, je voudrais savoir pourquoi CoffeeScript éviter de le faire. Je ne pense pas que JSLint hurlaient d'une erreur de déclaration, tant que la fonction est déclarée dans le haut de la portée.

  • Avez-vous une bonne raison de vouloir déclaration de fonction? Si votre utilisation de coffeescript vous ne devriez pas vous soucier du format de la compilation des JS, sauf si elle est cassée / buggé.
  • Dans la plupart des cas, la déclaration de la fonction et de la fonction d'expression de la même façon, mais il y a une légère différence entre les deux. Par exemple, developer.mozilla.org/en/JavaScript/Reference/... Donc, dans certains cas, ils ne sont pas égaux.
  • vous me lie à un morceau de code où la déclaration de la fonction est un comportement indéterminé. Voulez-vous utiliser les déclarations de fonction au lieu de les expressions de fonction de sorte que vous pouvez les abus de comportement indéterminé?
  • Les déclarations de fonction peut être sympa pour la pile et d'autres traces de débogage, car un nom est associé à la fonction. C'est pourquoi CoffeeScript utilise pour classes.
  • c'est une autre question. C'est une des raisons que je n'utilise pas CS, le débogage compilé js est une douleur.
  • Comment est-ce un autre problème? Vous avez envie d'une bonne raison pour la déclaration de la fonction. function a(c) vous donnant plus claire des traces de pile que a = function(c) est une assez bonne raison.
  • Je voulais dire que c'est seulement une légère amélioration sur la difficulté de débogage compilé js. Ce que vous voulez vraiment est un débogueur peut lire coffeescript.
  • Je n'ai pas remarqué de différences dans leurs traces de pile, mais il est bon de savoir.
  • Même si le débogueur peut lire coffeescript, qui ne serait pas aider. Le Javascript qui CS est traduit pour ne pas avoir les fonctions nommées, par conséquent, le débogueur ne peut pas les afficher. En analysant le code source après le fait de comprendre quelles sont les variables de la fonction peut ou ne peut pas être affectée semble trop fragile pour moi.

InformationsquelleAutor Grace Shao | 2011-07-01