Sembra che CoffeeScript restituisca automaticamente l'ultimo elemento in un ambito. Posso evitare questa funzionalità?
Sembra che CoffeeScript restituisca automaticamente l'ultimo elemento in un ambito. Posso evitare questa funzionalità?
Risposte:
Non devi restituire esplicitamente nulla o lasciare un'espressione che restituisce undefined in fondo alla tua funzione:
fun = ->
doSomething()
return
O:
fun = ->
doSomething()
undefined
Questo è ciò che consiglia il documento, quando si usano le comprensioni:
Fai attenzione a non restituire accidentalmente i risultati della comprensione in questi casi, aggiungendo un valore di ritorno significativo , come true, o null, alla fine della funzione .
Tuttavia, potresti scrivere un wrapper come questo:
voidFun = (fun) ->
->
fun(arguments...)
return
(Notare l' operatore splat qui ( ...))
E usalo in questo modo quando definisci le funzioni:
fun = voidFun ->
doSomething()
doSomethingElse()
O in questo modo:
fun = voidFun(->
doSomething()
doSomethingElse()
)
return, undefinedo nullfino alla fine della mia funzione. Tuttavia, l'aggiunta nullmi sembra sbagliata per qualche motivo. Ho ragione a presumere che sia la scelta peggiore delle tre?
undfinedalla fine. L'uso di un'istruzione vuota returnsembra esprimere return niente di meglio che lasciare un undefinedalla fine della funzione, quindi il vuoto returnsembra essere l'opzione migliore.
fun(arguments...), sarebbe meglio chiamare fun.apply(this, arguments).
Sì, con una returncome ultima riga di una funzione.
Per esempio,
answer = () ->
42
extrovert = (question) ->
answer()
introvert = (question) ->
x = answer()
# contemplate about the answer x
return
Se desideri vedere in cosa js viene compilato il caffè, prova http://bit.ly/1enKdRl . (Ho usato coffeescript redux per il mio esempio)
Solo qualcosa di divertente (ctional)
suppressed = _.compose Function.prototype, -> 'do your stuff'
Function.prototypestessa è una funzione che non restituisce sempre nulla. Puoi usare compose per reindirizzare il tuo valore di ritorno in questo blackhole e la funzione composta non restituirà mai nulla.
Sembra che le funzioni in CoffeeScript debbano sempre restituire qualcosa, anche null. In C, hai voidcome tipo di ritorno.
->, la funzione vuota, viene compilata (function() {}), quindi è l'unica funzione che non restituisce nulla.
return;funziona in C, JavaScript e CoffeeScript per restituire un valore void.