tutorial objects javascript coffeescript

javascript - objects - coffeescript vs typescript



¿Cómo escribir este cierre lambda en CoffeeScript? (2)

Estoy tratando de recrear este popular cierre jQuery lambda con CoffeeScript:

(function($, window, undefined){ $(document).ready(function(){ ... }); })(jQuery, window);

Hasta ahora tengo esto:

(($, window, undefined) -> $ -> alert "js!" )(jQuery, window)

Estoy recibiendo este error:

Error: Error de análisis en la línea 1: Error inesperado ''BOOL''

Parece que undefined es la causa del problema aquí. ¿Alguna idea sobre cómo solucionar esto?


undefined es una palabra clave en CoffeeScript. No necesita asegurarse de que esté correctamente definido, para que pueda olvidar esa parte.

CoffeeScript proporciona una palabra clave do que puede utilizar para crear un cierre en lugar de usar la sintaxis de expresión de función invocada de inmediato.

CoffeeScript Source probarlo

do ($ = jQuery, window) -> $ -> alert "js!" JavaScript compilado

(function($, window) { return $(function() { return console.log("js!"); }); })(jQuery, window);

La sintaxis anterior no fue compatible hasta CoffeeScript 1.3.1. Para la versión más antigua todavía necesitas hacer esto:

Fuente de CoffeeScript [inténtalo]

(($, window) -> $ -> alert "js!" )(jQuery, window)

Si tienes curiosidad, así es como CoffeeScript se maneja undefined .

Fuente de CoffeeScript [inténtalo]

console.log undefined JavaScript compilado

console.log(void 0);

Puede ver que no usa la variable undefined , sino que utiliza el operador void de JavaScript para producir el valor indefinido.


do ($, window) -> $ -> alert "js!"

compila a

(function($, window) { return $(function() { return alert("js!"); }); })($, window);