48 votes

Fonctions En CoffeeScript

Je suis en train de convertir un function de Javascript pour CoffeeScript. C'est le code:

function convert(num1, num2, num3) {
    return num1 + num2 * num3;
}

Mais comment je peux le faire en CoffeeScript?


Je suis en train de lancer la fonction à partir d'une source HTML comme ceci:

<script type="text/javascript" src="../coffee/convert.js"></script>

<script type="text/javascript">
    convert(6, 3, 10);
</script>

Mais il ne fonctionne pas et j'obtiens un message d'erreur disant: ReferenceError: Can't find variable: convert

Comment remédier à cela?

78voto

lawnsea Points 2226

Vous avez besoin d'exporter la fonction de conversion à la portée globale. Voir Comment pouvons-Coffescript des fonctions d'accès à d'autres actifs?

convert = (num1, num2, num3) ->
  num1 + num2 * num3
window.convert = convert

33voto

jaime Points 15538

@lawnsea réponse est grande.

Je veux juste ajouter quelques réflexions.

Au lieu de polluer l'espace de noms global, je préfère ajouter une variable à l' window objet.

window.App = {}

Ensuite, vous pouvez avoir accès à l' App à l'échelle mondiale et à ajouter tous vos trucs. la fonction convert peut maintenant être exprimé de cette façon:

App.convert = convert = (a, b, c) -> a + b * c

Puis, à l'appel de la fonction au sein de l'étendue locale

convert 1,2,3

Et maintenant, à l'échelle mondiale

App.convert 1,2,3

17voto

twf Points 216

Au niveau le plus haut de votre coffeescript fichier, ce (aka @) doit renvoyer à la fenêtre. Donc, pour l'attacher ici, vous pouvez aussi utiliser le raccourci:

@convert = (num1, num2, num3) -> num1 + num2 * num3

Notez que cela pollue l'espace de noms global. La solution posté par jm- est plus prudent. Mais vous pouvez le remplacer

window.App = {}

avec

@App = {}

L'avantage de l'utilisation de @ , c'est qu'il fait référence mondiale dans node.js, de sorte que vous pouvez utiliser le même code pour exposer vos fonctions dans les deux navigateur et serverside environnements.

5voto

edoloughlin Points 2048
window.convert = (num1, num2, num3) ->
  num1 + num2 * num3

1voto

jrhicks Points 5369

Vous devriez vérifier ces génial diapositives simplement publié aujourd'hui par godfoca http://www.slideshare.net/godfoca/lets-have-a-cup-of-coffeescript Aussi, vous pouvez essayer de code par-le-web http://jashkenas.github.com/coffee-script/

convert = (num1, num2, num3) ->
  num1 + num2 * num3

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X