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 while
lingkaran, dan kemudian membaginya menjadi a,b,c
bagian - bagian dalam satu for
lingkaran.
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 this
atau self
alih-alih window
dalam 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.getElementById
yang dapat direduksi menjadi d[e]
.
catatan:
Dengan notasi braket, biaya adalah 6 + name.length
karakter yang pertama kali. Setiap akses selanjutnya memiliki biaya 3
karakter.
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 .length
4 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.