Brogrammist
رفتن به کانال در Telegram
Web-dasturlash bo'yicha kamtarona bilim va tajribalarimni ulashaman. 2-kanal: @alkhorithm YouTube: https://youtube.com/@brogrammistuz Insta: https://instagram.com/brogrammistuz
نمایش بیشتر651
مشترکین
اطلاعاتی وجود ندارد24 ساعت
اطلاعاتی وجود ندارد7 روز
اطلاعاتی وجود ندارد30 روز
آرشیو پست ها
651
IIFE (Immediately Invoked Function Expression)
Yaqinda Go dasturlash tilida IIFE sintaksis juda soddaligini ko'rib JavaScriptda ham shunday bo'lganda edi deb qoldim. Chunki Go'da funksiyani ortiqcha qavs ichiga olish shart emas ekan:
func(num int) int {
return num * num
}(5)
JavaScript'da esa xuddi shu ifoda bunday bo'lardi:
(function(num) {
return num * num
})(5)
Shuni qavslarsiz qilsa bo'ladimi?
Ha! Faqat oldiga void qo'yish kerak bo'ladi:
void function(num) {
return num * num
}(5)
Agar asinxron funksiya bo'lsa, void yoki await qo'yish mumkin:
await async function(num) {
return num * num
}(5)
Shunaqa gaplar.651
Dasturlash, xususan frontend bo'yicha bilimlarimni oshirishda ushbu manbaalardan foydalanaman:
Bloglar:
- https://css-tricks.com/
- https://www.joshwcomeau.com/
- https://kentcdodds.com/blog/semicolons-in-javascript-a-preference
Telegram kanallar, har xil mavzularda zo'r maqolalar post qilinadi:
- @thedevs
- @frontend_1
- @godofjs
YouTube:
- Google Chrome Developers
- HTTP 203, GUI challenge, The CSS Podcast seriyalarini asosan kuzatib boraman.
- JS Conf
- Fireship
651
Repost from Azim Pulat
Sun'iy Intellekt Dasturchilarni Ishsiz Qoldiradimi?
Hozirgacha ChatGPTning kod yozish mahoratini ko'rgan bo'lsangiz kerak.
O'zidan so'rab ko'rsam, havotirga o'rin yo'q dedi. Ko'ngil xotirjamligi uchun, keling chuqurroq mulohaza qilamiz.
⏰ 24-dekabr, soat 19:00da
🎙️ @lazyprogrammer jonli suhbat
651
Number.MIN_VALUE > 0 === true ?
JavaScript’ni yomon ko’rish uchun mana yana bitta sabab. Ma’lum bo’lishicha,
Number.MIN_VALUE noldan katta eng kichik son ekan. Judayam chalg’ituvchi nom.
Agar sizga eng kichik butun son kerak bo’lsa Number.MIN_SAFE_INTEGER ni ishlating.651
❗️DISCLAIMER ❗️
Tepagi post orqali endi hamma for-loop larni refaktor qilib chiqinglar, bo'lmasa dasturlaringiz qotib qoladi, demoqchi emasman. Tezlik deganda nisbiy tezlik nazarda tutilgan. Farq nanosekundlarda. Umuman dasturinguz qanchalik tez ishlashi ko'pincha bunday faktorlarga aloqador bo'lmaydi. Agar tezlik siz uchun muhim bo'lsa, JavaScript'dan boshqa tilni ishlatishni maslahat beraman.
651
“Let” o’zgaruvchi “For-loop”ni sekinlashtiradi
Kechagi mavzuni davom ettiradigan bo’lsak, for-loop ifodaviy qismlarining barchasida leksik maydon hosil qilish mumkinligini aytgandim. Agar for-loop uchun iterativ o’zgaruvchini “let” orqali e’lon qilsak, har bir iteratsiyada alohida leksik maydon hosil bo’ladi. Bu leksik maydonlar o’zidan oldigisi ham bog’langan bo’ladi. Chunki yangi leksik maydonga undan oldigisidagi o’zgaruvchi qiymatlari nusxalab ko’chiriladi. Endi tassavur qiling ichma-ich yozilgan katta for-loop’lar “let” bilan ishlasa qanday gigant “lexical scope graph” hosil qiladi.
Agar JS engine’lar bu holatda shuncha ish qilyotgan bo’lsa, kodimiz tezligi tushib ketishi turgan gap. Bu bo’yicha V8 engine’da alohida raport qilingan. U yerdagi muhokamani o’qisangiz iloji boricha “for(;;)” strukturasini ishlatmaslik tavsiya qilingan. Albatta agar tezlik muhim bo’lsa. Uning o’rniga “for-of” yoki “for-in”lardan foydalanish nisbatan tezroq bo’lar ekan.
Agar “for(;;)”ni ishlatish chorasiz bo’lib qolsa, uni “var” bilan ishlatish ham kod tezligini oshiradi. Chunki bu holatda har bir iteratsiyada leksik maydonlar zanjiri hosil bo’lmaydi.
Benchmarking uchun kichik na’munaga link qoldiraman. Kodni bir necha marta yuritib ko’rsangiz, “var for-loop” nisbatan tezroq, “let for-loop” esa eng sekini ekaniligini ko’rasiz.
651
Lexical scopes in for-loop
For-loop strukturasi 4 ta asosiy ifodaviy qismlardan iborat:
for (ifoda1; ifoda2; ifoda3) {
ifoda4;
}
1-ifoda sikl boshida FAQAT BIR MARTA ishga tushadi. Bu yerda biz ko’pincha o’zgaruvchilar e’lon qilamiz, boshlag’ich holatni belgilaymiz.
2-ifoda har safar sikl boshida ishga tushadi. Bu yerga sikl tugatilish sharti qo’yiladi.
4-ifoda siklimiz tanasi. 2-ifodadan ROST qiymatini olar ekanmiz, 4-ifoda har doim bajariladi.
3-ifoda har safar sikl tugaganida ishga tushadi. Bu yerda sikl yakunlangaida qilinishi kerak bo’lgan amal(lar)ni joylaymiz.
JavaScript’da “lexical scope” tushunchasi mavjud. Qisqacha ma’nosi leksik maydon. Yuqoridagi for-loop strukturasidagi ifodalarning har biri o’z leksik maydonini yarata oladi.
Misolga qaraydigan bo’lsak, setTimeout 1-ifodaning “lexical scope”ida joylashgan. Ifda esa bir martagina ishga tushadi. O’zgaruvchi let orqali e’lon qilingani uchun “i”ning qiymati setTimeout uchun o’shaligicha qolaveradi.
1-ifoda ekvivalenti bunday bo’ladi:
let i = (setTimeout(()=>console.log(i)), 0);
// tushunarliroq qilib yozsak
{
let i = 0;
setTimeout(()=>console.log(i), 0);
}
Shunday ekan, for-loop’da bo’ladigan keyingi o’zgarishlarning setTimeout ichidagi “i”ga hech qanday tasiri yo’q. Chunki u alohida “lexical scope”da.
Javob: 0651
Kodda chalg’ituvchi kichik narsa bor edi. Ko’pchilik bu sintaksisni bilmaydi. Agar qavs ichida qiymatlar vergul bilan ketma-ket yozilsa, faqat oxirgisi olinadi:
let i = (0,1,2,3); console.log(i); // 3Qavs ichida xohlagaqn ishingizni qilsangiz bo’ladi. Masalan setTimeout:
let i = (setTimeout(()=>alert()), 2); console.log(i); // 2Aytgancha setTimeout 2-parametrini berish shart emas. O’zi nol bo’lib ketadi:
setTimeout(()=>alert()); // bir xil setTimeout(()=>alert(), 0);
651
HTML tarixiga nazar solsak, bu til SGML tiliga asoslangan va takomillashtirilgan.
SGML (Standard Generalized Markup Language) 1980-yillarda "machine-readable" (mashina o'qiyoladigan) hujjatlar uchun ishlab chiqilgan.
SGML o'z navbatida GML tiliga asoslangan. GML (General Markup Language) 1960-yillarda IBM tominidan ishlab chiqilgan. Aniqrog'i Charles Goldfarb, Edward Mosher, va Raymond Lorie'lar uning ustida ishlagan.
GML qisqartmasi aslida General Markup Language emas, o'sha 3 ta dasturchi familiyalarining bosh harfidir:
Goldfarb Mosher Lorie
Respekt 👍
651
- Siz programmistmisiz?
- Yog'e, shunchaki havaskorman.
- Unda grammistmisiz?
- 😐
#kunhazili
651
Aytgancha Instagram va YouTube kanalimga har kuni Reels/Shorts yuklab boryapman.
Insta: https://instagram.com/brogrammistuz
YouTube: https://youtube.com/@brogrammistuz
651
Umuman olganda o'zi React'ni ishlatish ham SHART emas. Axir hammasini toza JavaScript'da yozishning iloji bo'lsa!
- degan ekan Afandi.
651
Qaysi JS framework/kutubxonalar bilan ishlaysiz? Agar "Boshqasi"ni tanlagan bo'lsangiz izohlarda qoldiring.
651
Yuqoridagi postni o'qishga eringanlar bo'lsa, oxiridagi xulosa bunday:
Shuni esda tutishingizni xohlagan bo'lardim: har doim yozgan kodingizga qarab, buni yaxshilash mumkinmi degan savolni o'zingizga berib ko'ring. Agar javob "ha" bo'lsa, uni qilish arzigulikmi degan savolni bering. Men ham shu savolni o'zimga berdim va "hozir arzimaydi" degan xulosaga keldim. Chunki muhim ishlar tuganda bunga vaqt ketkazgim kelmadi. Shuning uchun ham kodni refaktor qilganim yo'q.
#prioritization
