¿Qué trucos sabes para acortar el código CoffeeScript?
CoffeeScript es un lenguaje que compila en JavaScript ("transpila" en ES3, para ser exactos). La regla de oro es "Es solo JavaScript", lo que significa que no hay sobrecarga de tiempo de ejecución. La mayoría de los consejos y trucos de JavaScript también se aplican.
Como efecto secundario eso también significa: los desarrolladores que vienen de JavaScript (incluido yo mismo) tienden a usar construcciones de JavaScript en lugar de alternativas más cortas de CoffeeScript.
Este hilo se centra en consejos específicos para CoffeeScript.
Enlaces a temas relacionados:
yield
, se compila en el generador ES6. De lo contrario, intenta ser lo más compatible posible con el navegador.Respuestas:
Use asignaciones de desestructuración, si los elementos de la estructura se usan con frecuencia
P.ej. obtener elementos de la primera matriz de argumentos
Esto se puede combinar con símbolos
fuente
Evaluación de cortocircuito en lugar de operador ternario
CoffeeScript no tiene el operador ternario de JavaScript
?
, sin embargo, la funcionalidad de evaluación de cortocircuito a veces se puede utilizar en su lugar:Es algo equivalente a en JavaScript:
Será no funciona si b es (o puede evaluar a) un valor Falsy como
0
.fuente
Operador de división entera
//
Ahorra hasta 10 bytes al evitar la necesidad de números de piso al dividir.
Usando el
//
operador:En comparación con JavaScript:
fuente
(61/3|0)
funciona igual de bien para vanilla JS.//
es en realidada .floor()
, por lo que funciona de manera diferente para números negativos:,foo = -61//3 # -21
mientras quefoo = -61/3|0 # -20
//1
para un piso liso.Omitir paréntesis cuando sea posible
fuente
No
null
pero posiblemente Falsy (0
,NaN
,""
,false
, etc.)Si necesita verificar si una variable está definida y no
null
, use el signo de interrogación final:Compila a:
Esto probablemente no se aplicará a muchas entradas de golf de código, pero podría ser útil si necesita distinguir de un cero, falso, cadena vacía u otro valor falso.
fuente
Operador de exponenciación
**
Guarda 9 bytes:
En comparación con JavaScript:
fuente
1<<x
es igual a2**x
Buscando matrices
Ahorre aproximadamente 8 bytes si solo desea verificar si un elemento está en una matriz, puede usar el
in
operador.En comparación con las alternativas en JavaScript:
Sin embargo, en el raro caso de que necesite el índice del elemento, este truco no funcionará para usted.
fuente
b = c in'|-+'
El espacio es divertido. El espacio es importante para llamar a funciones
fuente
Usa símbolos
fuente
Accesores seguros:
?.
yfunc? args...
El operador existencial
?
tiene muchas formas y usos. Además de verificar si la variable está configurada, puede acceder a los métodos y propiedades del objeto sin verificar previamente si el objeto es nulo:se ejecutará
obj.property.method args...
solo siobj.property
yobj.property.method
están definidos y no son nulos.Útil si itera sobre varias matrices dispersas al mismo tiempo:
fuente