Quais truques você conhece para diminuir o código do CoffeeScript?
CoffeeScript é uma linguagem que é compilada em JavaScript ("transpila" para o ES3, para ser exato). A regra de ouro é "É apenas JavaScript", o que significa que não há sobrecarga no tempo de execução. A maioria das dicas e truques para JavaScript também se aplica.
Como efeito colateral, isso também significa: desenvolvedores provenientes de JavaScript (inclusive eu) tendem a usar construções JavaScript em vez de alternativas mais curtas ao CoffeeScript.
Este tópico enfoca dicas específicas para o CoffeeScript.
Links para tópicos relacionados:
yield
compila no gerador ES6. Caso contrário, ele tenta ser o mais compatível possível com o navegador.Respostas:
Use atribuições de desestruturação, se os elementos da estrutura forem usados com frequência
Por exemplo. obter elementos da primeira matriz de argumentos
Isso pode ser combinado com splats
fonte
Avaliação de curto-circuito no lugar do operador ternário
O CoffeeScript não possui o operador ternário do JavaScript
?
, no entanto, às vezes , a funcionalidade da avaliação de curto-circuito pode ser usada:É um pouco equivalente ao JavaScript:
Ele vai não funcionará se b é (ou pode avaliar a) um valor Falsas tais como
0
.fonte
Operador de divisão inteira
//
Economiza até 10 bytes, evitando a necessidade de incluir números ao dividir.
Usando o
//
operador:Comparado ao JavaScript:
fonte
(61/3|0)
funciona tão bem para o vanilla JS.//
é realmentea .floor()
, então funciona de maneira diferente para números negativosfoo = -61//3 # -21
foo = -61/3|0 # -20
//1
para um piso plano.Omita parênteses quando possível
fonte
Não
null
, mas possivelmente Falsas (0
,NaN
,""
,false
, etc.)Se você precisar verificar se uma variável está definida e não
null
, use o ponto de interrogação à direita:Compila para:
Isso provavelmente não se aplica a muitas entradas de código de golfe, mas pode ser útil se você precisar distinguir de um valor zero, falso, cadeia vazia ou outro valor falso.
fonte
Operador de exponenciação
**
Salva 9 bytes:
Comparado ao JavaScript:
fonte
1<<x
é igual a2**x
Procurando matrizes
Salve aproximadamente 8 bytes se quiser verificar se um elemento está em uma matriz, você pode usar o
in
operador.Comparado com alternativas em JavaScript:
No entanto, no caso raro de você precisar do índice do elemento, esse truque não funcionará para você.
fonte
b = c in'|-+'
O espaço é divertido. O espaço é significativo para chamar funções
fonte
Use splats
fonte
Acessadores seguros:
?.
efunc? args...
O operador existente
?
possui muitas formas e usos. Além de apenas verificar se a variável está definida, você pode acessar métodos e propriedades do objeto sem verificar previamente se o objeto é nulo:será executado
obj.property.method args...
apenas seobj.property
eobj.property.method
estiver definido e não for nulo.Útil se você repetir várias matrizes esparsas ao mesmo tempo:
fonte