¿Cómo escribir esto en coffeescript?
f = (function(){
// something
})();
Gracias por los consejos :)
javascript
javascript-framework
coffeescript
usuario537339
fuente
fuente

f = do -> console.log x-> console.log 'this runs right away'af, luego la ejecuta; el tuyo ejecuta la función y luego asigna su resultado af, como en la pregunta original. (Aunque en el caso deconsole.log, el valor de retorno es siempre deundefinedtodos modos.){f: do -> // something}dotambién le permite pasar argumentos a la función. Para pasar1y2como los parámetrosxyy, escribirdo (x = 1, y = 2) ->. (La documentación de esta función se ha perdido , pero el problema en el que se introdujo la función tiene algunos ejemplos).Si desea "alias" los argumentos pasados a la función autoinvocada en CoffeeScript, digamos que esto es lo que está tratando de lograr:
(function ( global, doc ) { // your code in local scope goes here })( window, document );Entonces
do (window, document) ->no te dejará hacer eso. El camino a seguir es con parens entonces:(( global, doc ) -> # your code here )( window, document )fuente
do (global=window, doc=document) ->es ridículamente fácil en el café:
do ->volverá
(function() {})();fuente
También puede combinar la
dopalabra clave con los parámetros de función predeterminados para generar "funciones de autoiniciación" recursivas con un valor inicial. Ejemplo:do recursivelyPrint = (a=0) -> console.log a setTimeout (-> recursivelyPrint a + 1), 1000fuente
tratar de usar
do ($ = jQuery) ->fuente
do -> #your stuff hereEsto creará un cierre autoejecutable, que es útil para establecer el alcance.
fuente
Disculpas, lo resolví:
f = ( () -> "something" )()fuente
dopalabra clave tiene algunas limitaciones que hacen que sea necesario utilizar el enfoque de estilo JS en ocasiones (consulte el número 960 );doen realidad solo se agregó debido al caso de uso de bucle con cierres.Debería ser
f = () -> # do somethingfuente