Fancy Untuk Loops
Anda dapat menggunakan standar untuk loop dengan cara yang tidak standar
for ( a; b; c )
pada dasarnya setara dengan:
a;
while ( b )
{
...
c;
}
jadi trik yang bagus adalah menulis kode Anda dengan satu whilelingkaran, dan kemudian membaginya menjadi a,b,cbagian - bagian dalam satu forlingkaran.
Beberapa contoh yang saya tulis :
for(x=y=n;!z;x--,y++)z=i(x)?x:i(y)?y:0
for(a=b=1;b<n;c=a+b,a=b,b=c);
Rantai setter Anda
Jika Anda menginisialisasi atau mengatur ulang beberapa nilai, rangkai nilai ke semua variabel yang membutuhkannya:
a=b=1;
Pengecoran implisit
Jangan periksa tipe Anda, gunakan saja apa adanya. karakter parseInt()biaya 10. Jika Anda perlu membuang string, jadilah kreatif:
a='30';
b='10';
c = a + b; //failure
c = parseInt(a) + parseInt(b) //too long
c = -(-a-b); //try these
c = ~~a+~~b;
c = +a+ +b;
c = a- -b;
Hindari titik koma
JavaScript memiliki penyisipan semi-kolon otomatis. Sering-seringlah menggunakannya.
Satu kalimat
Menghemat kurung dengan mendorong sebanyak mungkin ke dalam satu baris, atau parameter:
a( realParam1, realParam2, fizz='buzz' )
Operator kenaikan / penurunan
a = a - 1;
foo(a);
dan
foo(a);
a = a - 1;
dapat dengan mudah ditulis ulang sebagai
foo(--a);
dan
foo(a--);
masing-masing.
Gunakan thisatau selfalih-alih windowdalam konteks global
Cukup jelas, penghematan 2 karakter.
Gunakan notasi braket untuk akses properti berulang
Ini jelas merupakan tindakan penyeimbangan antara panjang nama properti dan jumlah akses. Alih-alih memanggil a.longFunctionName()dengan notasi titik dua kali, ini lebih pendek untuk menyimpan nama dan memanggil fungsi melalui notasi braket:
a.longFunctionName(b)
a.longFunctionName(c)
//42
-vs-
a[f='longFunctionName'](b)
a[f](c)
//34
ini sangat efektif dengan fungsi seperti document.getElementByIdyang dapat direduksi menjadi d[e].
catatan:
Dengan notasi braket, biaya adalah 6 + name.lengthkarakter yang pertama kali. Setiap akses selanjutnya memiliki biaya 3karakter.
Untuk notasi titik, semua mengakses karakter biaya name.length + 1(+1 untuk .).
Gunakan metode ini jika 6 + name.length + (3 * (accesses - 1)) < accesses * (name.length + 1).
len = panjang nama properti
i = akses minimum untuk memanfaatkan
len | i
========
1 | ∞
2 | ∞
3 | 7
4 | 4
5 | 3
6 | 3
7 | 3
8+ | 2
Jumlah akses juga dapat menjangkau beberapa objek. Jika Anda mengakses .length4 kali atau lebih pada array yang berbeda, Anda dapat menggunakan variabel yang sama dengan memegang string 'length'.
var)? Dan haruskah kode golf JavaScript menjadi fungsi atau mengeluarkan sesuatu secara langsung? Jujur saya pikir ini bisa membuat banyak perbedaan.