J'essaie de convertir un function
de Javascript en CoffeeScript. Voici le code:
function convert(num1, num2, num3) {
return num1 + num2 * num3;
}
Mais comment puis-je faire cela dans CoffeeScript?
J'essaie d'exécuter la fonction à partir d'une source HTML comme celle-ci:
<script type="text/javascript" src="../coffee/convert.js"></script>
<script type="text/javascript">
convert(6, 3, 10);
</script>
Mais cela ne fonctionnera pas et j'obtiens une erreur disant: ReferenceError: Can't find variable: convert
Comment corriger ça?
Vous devez exporter la fonction de conversion dans la portée globale.
Voir Comment l'accès à Coffescript peut-il fonctionner à partir d'autres ressources?
window.convert = (num1, num2, num3) ->
num1 + num2 * num3
@lawnsea est une excellente réponse.
Je veux juste ajouter quelques réflexions.
Au lieu de polluer l'espace de noms global, je préfère ajouter une seule variable à l'objet window
.
window.App = {}
Ensuite, vous pouvez accéder à App
globalement et y ajouter toutes vos données. la fonction convert
peut maintenant être exprimée de cette façon:
App.convert = convert = (a, b, c) -> a + b * c
Ensuite, pour appeler la fonction dans la portée locale
convert 1,2,3
Et maintenant dans le monde
App.convert 1,2,3
Au niveau supérieur de votre fichier coffeescript, this (aka @) devrait faire référence à window. Donc, pour le joindre ici, vous pouvez utiliser le raccourci:
@convert = (num1, num2, num3) -> num1 + num2 * num3
Notez cependant que cela pollue l'espace de noms global. La solution proposée par jm - est plus prudente. Mais vous pouvez remplacer
window.App = {}
avec
@App = {}
L'avantage d'utiliser @ est qu'il fait référence à global dans node.js, vous pouvez donc utiliser le même code pour exposer vos fonctions dans les environnements de navigateur et côté serveur.
window.convert = (num1, num2, num3) ->
num1 + num2 * num3
Vous devriez vérifier ces diapositives impressionnantes qui viennent d'être publiées aujourd'hui par godfoca http://www.slideshare.net/godfoca/lets-have-a-cup-of-coffeescript En outre, vous pouvez essayer le code via- le Web à http://jashkenas.github.com/coffee-script/
convert = (num1, num2, num3) ->
num1 + num2 * num3
convert = (num1, num2, num3) -> num1 + num2 * num3