Parece que CoffeeScript devuelve automáticamente el último elemento de un alcance. ¿Puedo evitar esta funcionalidad?
Parece que CoffeeScript devuelve automáticamente el último elemento de un alcance. ¿Puedo evitar esta funcionalidad?
Respuestas:
Debe devolver nada explícitamente o dejar una expresión que se evalúe como indefinida en la parte inferior de su función:
fun = ->
doSomething()
return
O:
fun = ->
doSomething()
undefined
Esto es lo que recomienda el documento, al usar comprensiones:
Tenga cuidado de no devolver accidentalmente los resultados de la comprensión en estos casos, agregando un valor de retorno significativo , como verdadero, o nulo, al final de su función .
Sin embargo, podría escribir un contenedor como este:
voidFun = (fun) ->
->
fun(arguments...)
return
(Observe el operador de splat aquí ( ...
))
Y utilícelo así al definir funciones:
fun = voidFun ->
doSomething()
doSomethingElse()
O así:
fun = voidFun(->
doSomething()
doSomethingElse()
)
return
, undefined
o null
hasta el final de mi función. Sin embargo, agregar me null
parece incorrecto por alguna razón. ¿Estoy en lo cierto al asumir que es la peor opción de las tres?
undfined
al final. El uso de una return
declaración vacía parece expresar un retorno nada mejor que dejar un undefined
al final de la función, por lo que el vacío return
parece ser la mejor opción.
fun(arguments...)
, sería mejor llamar fun.apply(this, arguments)
.
Si, con un return
como última línea de una función.
Por ejemplo,
answer = () ->
42
extrovert = (question) ->
answer()
introvert = (question) ->
x = answer()
# contemplate about the answer x
return
Si desea ver con qué js se compila el café, pruebe http://bit.ly/1enKdRl . (He usado coffeescript redux para mi ejemplo)
Solo algo divertido (opcional)
suppressed = _.compose Function.prototype, -> 'do your stuff'
Function.prototype
en sí misma es una función que siempre no devuelve nada. Puede usar componer para canalizar su valor de retorno a este agujero negro y la función compuesta nunca devolverá nada.
Parece que las funciones en CoffeeScript siempre deben devolver algo, incluso null
. En C, tiene void
como tipo de retorno.
->
, la función vacía, se compila (function() {})
, por lo que es la única función que no devuelve nada.
return;
funciona en C, JavaScript y CoffeeScript para devolver un valor nulo.