tutorial react objects node convertir coffee javascript coffeescript

javascript - react - Sintaxis de funciones anónimas en CoffeeScript



node js (3)

He estado buscando en CoffeeScript y no entiendo cómo escribiría un código como este. ¿Cómo maneja las funciones anónimas anidadas en su sintaxis?

;(function($) { var app = $.sammy(function() { this.get(''#/'', function() { $(''#main'').text(''''); }); this.get(''#/test'', function() { $(''#main'').text(''Hello World''); }); }); $(function() { app.run() }); })(jQuery);


En realidad no lo compilé, pero esto debería funcionar

(($) -> app = $.sammy -> this.get ''#/'', -> $(''#main'').text '''' this.get ''#/test'', -> $(''#main'').text ''Hello World'' $(-> app.run() ) )(jQuery);


La respuesta de Matt es correcta, pero aquí hay un método alternativo:

En CoffeeScript 1.0 (lanzado unas semanas después de plantear esta pregunta), se introdujo un operador do que ejecuta la función que lo sigue inmediatamente. Se utiliza principalmente para capturar variables en bucles, ya que

for x in arr do (x) -> setTimeout (-> console.log x), 50

(que pasa una referencia a x en la función anónima) se comporta de manera diferente a

for x in arr setTimeout (-> console.log x), 50

Este último simplemente emitirá la última entrada en arr repetidamente, ya que solo hay una x .

De todos modos, deberías saber do como una forma de ejecutar una función anónima sin paréntesis adicionales, aunque sus capacidades con respecto al paso de argumentos son un poco limitadas en este momento. He planteado una propuesta para ampliarlos .

Actualmente, el equivalente de su ejemplo de código sería

do -> $ = jQuery ...

Si mi propuesta es aceptada, será posible escribir.

do ($ = jQuery) -> ...

en lugar.


Variante corta

do ($=jQuery)-> app = $.sammy -> @get ''#/'', -> $("#main").text '''' @get ''#/test'', -> $(''#main'').text ''Hello world'' $ -> app.run()