javascript - coffee - js to coff
Funciones en CoffeeScript (6)
Estoy tratando de convertir una function
de Javascript a CoffeeScript. Este es el código:
function convert(num1, num2, num3) {
return num1 + num2 * num3;
}
¿Pero cómo puedo hacer eso en CoffeeScript?
Estoy intentando ejecutar la función desde una fuente HTML como esta:
<script type="text/javascript" src="../coffee/convert.js"></script>
<script type="text/javascript">
convert(6, 3, 10);
</script>
Pero no funcionará y me sale un error que dice: ReferenceError: Can''t find variable: convert
¿Cómo corregir esto?
Debes consultar estas increíbles diapositivas que acaba de ser lanzadas hoy por godfoca http://www.slideshare.net/godfoca/lets-have-a-cup-of-coffeescript Además, puedes intentar descifrar el código a través de la web en http://jashkenas.github.com/coffee-script/
convert = (num1, num2, num3) ->
num1 + num2 * num3
En el nivel superior de su archivo coffeescript, este (aka @ ) debe referirse a la ventana . Entonces, para adjuntarlo aquí, puedes usar la taquigrafía:
@convert = (num1, num2, num3) -> num1 + num2 * num3
Sin embargo, tenga en cuenta que esto contamina el espacio de nombre global. La solución publicada por jm- es más prudente. Pero puedes reemplazar
window.App = {}
con
@App = {}
El beneficio de usar @ es que se refiere a global en node.js, por lo que puede usar el mismo código para exponer sus funciones tanto en el navegador como en el entorno del servidor.
La respuesta de @lawnsea es genial.
Solo quiero agregar algunos pensamientos.
En lugar de contaminar el espacio de nombre global, prefiero agregar solo una variable al objeto window
.
window.App = {}
Luego, puedes tener acceso a la App
globalmente y agregar todas tus cosas ahí. la función convert
ahora se puede expresar de esta manera:
App.convert = convert = (a, b, c) -> a + b * c
Luego, para llamar a la función dentro del alcance local
convert 1,2,3
Y ahora globalmente
App.convert 1,2,3
Necesita exportar la función de conversión al alcance global.
Consulte ¿Cómo puede el acceso de Coffescript funcionar desde otros activos?
window.convert = (num1, num2, num3) ->
num1 + num2 * num3
convert = (num1, num2, num3) -> num1 + num2 * num3
window.convert = (num1, num2, num3) ->
num1 + num2 * num3