Nalika kuring mimiti diajar JavaScript, hal kahiji anu kuring lakukeun nyaéta ngadamel daptar trik anu ngabantosan kuring ngahémat waktos. Kuring nempo aranjeunna ti programer séjén, dina situs béda jeung dina manual.
Dina tulisan ieu, kuring bakal nunjukkeun anjeun 12 cara anu hadé pikeun ningkatkeun sareng nyepetkeun kode JavaScript anjeun. Dina kalolobaan kasus aranjeunna universal.
Kami ngingetan:pikeun sakabéh pamiarsa "Habr" - diskon 10 rubles nalika enrolling dina sagala Tangtu Skillbox ngagunakeun "Habr" kode promosi.
Tipe obyék Set diwanohkeun dina ES6, babarengan jeung ..., operator sumebar, urang bisa make eta pikeun nyieun Asép Sunandar Sunarya anyar nu ngandung ukur nilai unik.
Dina kaayaan normal, langkung seueur kode anu diperyogikeun pikeun ngalakukeun operasi anu sami.
Téhnik ieu lumaku pikeun arrays ngandung tipe primitif: undefined, null, boolean, string jeung angka. Upami anjeun damel sareng arrays anu ngandung objék, fungsi, atanapi arrays tambahan, anjeun peryogi pendekatan anu béda.
Panjang Asép Sunandar Sunarya cache dina siklus
SIKLUS
Nalika anjeun diajar loop, anjeun nuturkeun prosedur standar:
for (let i = 0; i < array.length; i++){
console.log(i);
}
Tapi, ku sintaksis ieu, loop for sababaraha kali mariksa panjang array unggal iterasi.
Kadang-kadang ieu bisa jadi mangpaat, tapi di hal nu ilahar leuwih efisien cache panjang Asép Sunandar Sunarya, nu bakal merlukeun hiji aksés ka dinya. Urang tiasa ngalakukeun ieu ku netepkeun variabel panjang dimana urang nangtukeun variabel i, sapertos kieu:
for (let i = 0, length = array.length; i < length; i++){
console.log(i);
}
Sacara prinsip, ampir sarua jeung di luhur, tapi ku ngaronjatna ukuran loop urang bakal meunang tabungan waktu signifikan.
Peunteun sirkuit pondok (peunteun McCarthy)
OPERATOR SYARAT
Operator ternary mangrupikeun cara anu gancang sareng épisién pikeun nyerat pernyataan kondisional anu saderhana (kadangkala henteu saderhana pisan):
x> 100? "leuwih ti 100": "kirang ti 100";
x> 100? (x> 200? "leuwih ti 200": "antara 100-200"): "kirang ti 100";
Tapi sok sanajan operator ternary leuwih pajeulit batan diperlukeun. Urang bisa make 'jeung' && jeung 'atawa' gantina || Operator Boolean pikeun meunteun ekspresi anu tangtu ku cara anu langkung ringkes. Hal ieu mindeng disebut "short circuit" atawa "short circuit rating".
Kumaha teu karya ieu
Sebutkeun urang ngan ukur hoyong mulangkeun hiji tina dua atanapi langkung kaayaan.
Ngagunakeun && bakal mulangkeun nilai palsu munggaran. Upami unggal operan dievaluasi leres, maka ekspresi terakhir anu dievaluasi bakal dipulangkeun.
let one = 1, two = 2, three = 3;
console.log(one && two && three); // Result: 3
console.log(0 && null); // Result: 0
Ngagunakeun || bakal mulangkeun nilai leres munggaran. Lamun unggal operan ngaevaluasi kana palsu, mangka nilai dievaluasi panungtungan bakal balik.
let one = 1, two = 2, three = 3;
console.log(one || two || three); // Result: 1
console.log(0 || null); // Result: null
conto 1
Sebutkeun urang hoyong mulangkeun panjang variabel, tapi urang henteu terang jinisna.
Dina hal ieu, Anjeun bisa make lamun / sejenna pikeun pariksa yen foo mangrupakeun tipe katuhu, tapi metoda ieu bisa jadi panjang teuing. Kituna, eta leuwih hade nyandak urang "short circuit".
return (foo || []).length;
Upami variabel foo ngagaduhan panjang anu cocog, éta bakal dipulangkeun. Upami teu kitu, urang bakal meunang 0.
conto 2
Dupi anjeun ngalaman masalah ngakses hiji objék nested? Anjeun bisa jadi teu nyaho naha hiji obyék atawa salah sahiji subproperties na aya, sarta ieu bisa ngakibatkeun masalah.
Contona, urang hayang ngakses sipat data di this.state, tapi data teu diartikeun dugi program urang mulih pamundut dipulut.
Gumantung kana dimana kami nganggo eta, nelepon this.state.data bisa nyegah aplikasi ti dimimitian. Pikeun ngajawab masalah, urang bisa mungkus ieu dina ekspresi kondisional:
Hiji pilihan hadé bakal ngagunakeun "atawa" operator.
return (this.state.data || 'Fetching Data');
Urang teu bisa ngarobah kodeu di luhur ngagunakeun &&. The 'Fetching Data' && this.state.data operator bakal balik this.state.data paduli naha éta undefined atanapi henteu.
ranté pilihan
Hiji tiasa nyarankeun ngagunakeun ranté pilihan nalika nyobian mulangkeun harta anu jero kana struktur tangkal. Janten, simbol tanda tanya? bisa dipaké pikeun meunangkeun harta ngan lamun teu null.
Contona, urang bisa refactor conto di luhur pikeun meunangkeun this.state.data?..(). Hartina, data dipulangkeun ngan lamun nilaina henteu nol.
Atawa, lamun eta perkara naha kaayaan diartikeun atanapi henteu, urang bisa balik this.state?.data.
Ngarobah Boolean
KONVERSI TIPE
Salian fungsi boolean normal leres sareng salah, JavaScript ogé ngarawat sadaya nilai sanés salaku leres atanapi palsu.
Dugi ka dicatet, sadaya nilai dina JavaScript leres, kecuali 0, "", null, undefined, NaN sareng, tangtosna, palsu. Panungtungan anu palsu.
Urang bisa kalayan gampang pindah antara dua ngagunakeun operator !, nu ogé ngarobah tipe kana boolean.
Meureun aya kaayaan dimana + bakal diinterpretasi salaku operator concatenation tinimbang hiji operator tambahan. Pikeun ngahindarkeun ieu, anjeun kedah nganggo tildes: ~~. Operator ieu sarua jeung -n-1. Contona, ~15 sarua jeung -16.
Ngagunakeun dua tildes sakaligus negates operasi sabab - (- - n - 1) - 1 = n + 1 - 1 = n. Dina basa sejen, ~-16 sarua jeung 15.
Dimimitian dina ES7, anjeun tiasa nganggo operator éksponénsial ** salaku shorthand pikeun kakuatan. Ieu leuwih gancang ti ngagunakeun Math.pow(2, 3). Sigana basajan, tapi titik ieu kaasup kana daptar téknik, sabab teu disebutkeun di mana waé.
console.log(2 ** 3); // Result: 8
Teu matak bingung jeung simbol ^, nu ilahar dipaké pikeun éksponénsial. Tapi dina JavaScript ieu operator XOR.
Sateuacan ES7, potong kompas ** ngan tiasa dianggo pikeun kakuatan dasar 2 nganggo operator shift kénca bitwise <<:
Math.pow(2, n);
2 << (n - 1);
2**n;
Contona, 2 << 3 = 16 sarua jeung 2 ** 4 = 16.
Ngambang ka integer
OPERASI / KONVERSI TIPE
Lamun perlu ngarobah ngambang ka integer, Anjeun tiasa make Math.floor (), Math.ceil () atanapi Math.round (). Tapi aya cara anu langkung gancang, pikeun ieu kami nganggo |, nyaéta operator OR.
Kalakuan | gumantung sakitu legana on naha anjeun kaayaan angka positif atawa négatif, jadi metoda ieu ngan cocog mun anjeun yakin kana naon anu anjeun lakukeun.
n | 0 miceun sagalana sanggeus pamisah decimal, truncating float ka integer.
Anjeun bisa meunangkeun éfék rounding sarua maké ~~. Saatos konversi kapaksa jadi integer, nilai tetep unchanged.
Nyoplokkeun angka labuh
Operator OR tiasa dianggo pikeun ngahapus sajumlah digit tina hiji nomer. Ieu hartosna urang henteu kedah ngarobih jinis sapertos kieu:
let str = "1553";
Number(str.substring(0, str.length - 1));
Notasi panah ES6 tiasa dianggo dina metode kelas, sareng ngariung tersirat. Ieu ngandung harti yén anjeun bisa ngucapkeun pamit ka ekspresi repetitive kawas kieu.myMethod = this.myMethod.bind(this)!