Il semble que CoffeeScript renvoie automatiquement le dernier élément d'une portée. Puis-je éviter cette fonctionnalité?
Réponses
Trop de publicités?Vous devez renvoyer explicitement à rien, ou à quitter une expression de l'évaluation à l'indéfini au bas de votre fonction:
fun = ->
doSomething()
return
Ou:
fun = ->
doSomething()
undefined
C'est ce que le doc recommande, lors de l'utilisation des inclusions:
Être prudent que vous n'êtes pas accidentellement retournant les résultats de la compréhension dans ces cas, en ajoutant un sens de la valeur de retour comme vrai ou null, vers le bas de votre fonction.
Vous pouvez, cependant, écrire un wrapper comme ceci:
voidFun = (fun) ->
->
fun(arguments...)
return
(Avis de la splat opérateur ici (...
))
Et de l'utiliser comme ceci lors de la définition des fonctions:
fun = voidFun ->
doSomething()
doSomethingElse()
Ou comme ceci:
fun = voidFun(->
doSomething()
doSomethingElse()
)
Oui, avec un `` la dernière ligne d’une fonction.
Par exemple,
Si vous souhaitez voir ce que js compile le café, essayez http://bit.ly/1enKdRl. (Pour mon exemple, j’ai utilisé coffeescript redux)
Juste quelque chose d'amusant (ctional)
suppressed = _.compose Function.prototype, -> 'do your stuff'
Function.prototype
lui-même est une fonction qui ne renvoie toujours rien. Vous pouvez utiliser compos pour diriger votre valeur de retour dans ce trou noir et la fonction composée ne renverra jamais rien.