Trik apa yang Anda ketahui untuk membuat kode CoffeeScript lebih pendek?
CoffeeScript adalah bahasa yang dikompilasi menjadi JavaScript ("transpiles" ke ES3, tepatnya). Aturan emas adalah "Ini hanya JavaScript", yang berarti tidak ada overhead runtime. Sebagian besar Tips & Trik JavaScript berlaku juga.
Sebagai efek samping yang juga berarti: pengembang yang berasal dari JavaScript (termasuk saya) cenderung menggunakan konstruksi JavaScript alih-alih alternatif CoffeeScript yang lebih pendek.
Utas ini berfokus pada kiat khusus untuk CoffeeScript.
Tautan ke topik terkait:
yield
, ia mengkompilasi menjadi generator ES6. Kalau tidak, ia akan berusaha memenuhi persyaratan browser.Jawaban:
Gunakan tugas penataan, jika elemen struktur sering digunakan
Misalnya. dapatkan elemen array argumen pertama
Ini dapat dikombinasikan dengan percikan
sumber
Evaluasi hubungan pendek sebagai pengganti operator ternary
CoffeeScript tidak memiliki operator ternary JavaScript
?
, namun fungsi evaluasi hubung singkat kadang-kadang dapat digunakan sebagai gantinya:Agak setara dengan dalam JavaScript:
Ini tidak akan berfungsi jika b adalah (atau dapat mengevaluasi) nilai falsy seperti
0
.sumber
Operator divisi integer
//
Menghemat hingga 10 byte dengan menghindari kebutuhan nomor lantai saat membagi.
Menggunakan
//
operator:Dibandingkan dengan JavaScript:
sumber
(61/3|0)
bekerja dengan baik untuk vanilla JS.//
sebenarnyaa .floor()
, jadi itu bekerja secara berbeda untuk angka negatiffoo = -61//3 # -21
foo = -61/3|0 # -20
//1
lantai biasa.Hilangkan tanda kurung jika memungkinkan
sumber
Tidak
null
tapi mungkin falsy (0
,NaN
,""
,false
, dll)Jika Anda perlu memeriksa apakah suatu variabel didefinisikan dan tidak
null
, gunakan tanda tanya tambahan:Kompilasi ke:
Ini mungkin tidak akan berlaku untuk banyak entri kode golf tetapi mungkin berguna jika Anda perlu membedakan dari nol, false, string kosong, atau nilai falsy lainnya.
sumber
Operator eksponensial
**
Menghemat 9 byte:
Dibandingkan dengan JavaScript:
sumber
1<<x
sama dengan2**x
Mencari array
Simpan sekitar 8 byte jika Anda hanya ingin memeriksa apakah suatu elemen ada dalam array, Anda dapat menggunakan
in
operator.Dibandingkan dengan alternatif dalam JavaScript:
Namun dalam kasus langka bahwa Anda memerlukan indeks elemen maka trik ini tidak akan berhasil untuk Anda.
sumber
b = c in'|-+'
Ruang itu menyenangkan. Ruang penting untuk fungsi panggilan
sumber
Gunakan percikan
sumber
Aksesor aman:
?.
danfunc? args...
Operator eksistensial
?
memiliki banyak bentuk dan kegunaan. Selain hanya memeriksa apakah variabel disetel, Anda dapat mengakses metode dan properti objek tanpa terlebih dahulu memeriksa apakah objek tersebut nol:akan mengeksekusi
obj.property.method args...
hanya jikaobj.property
danobj.property.method
didefinisikan dan bukan nol.Berguna jika Anda mengulangi beberapa array jarang pada saat yang sama:
sumber