Shahzod Codes


Гео и язык канала: не указан, не указан
Категория: не указана


Frontend dasturlash va JavaScript bo’yicha tips and guides 🤓
Author: Shahzod Tursunov, Team Lead Frontend at Uzum
Telegram: @sheyxuz
Instagram: https://instagram.com/shahzodcodes?igshid=YmMyMTA2M2Y=
YouTube: https://www.youtube.com/@shahzodcodes

Связанные каналы  |  Похожие каналы

Гео и язык канала
не указан, не указан
Категория
не указана
Статистика
Фильтр публикаций


Bugun post yozmaslik ga qaror qildim, nega dib so’rashingiz mumkun sababi kanal da aynan nima mavzuga qiziqish bor shuni bilmoxchi edim. Ayrim juda foydali postlarimda kam like va etibor lekin ayrimlarini masalan tasklarda juda kop comment lar va hakozo, shunga sizlar uchun foydali mavzuni post qilay deb bugun day off oldim 🤓

Izohlarda yozib qoldiring aynan qaysi mavzularda postlar qilishimni ko’proq xohlaysizlar ?

Xozirgi yo’nalishlar
#task
#foydali
#dailytips
#interview


#task

Funksiyalar haqida gapirdik va shunga yarasha mini task desak ham bo'ladi yoki savol desak ham bo'ladi, javobini comment larda qoldiring!

const name = 'Shahzod Codes'

const shahzod = {
name: 'Shahzod',
funksiya: () => this.name
}

console.log(shahzod.funksiya())

shu holatda console nima javob qaytaradi, buni run qilib ko'rmastan bilimga tayanib javob berishga xarakat qilib ko'ring 🤓


#dailytips
JavaScript da funksiyalar haqida gaplashamiz. Ular 2 xil turga bo'linib: oldindan belgilangan (predefined) va foydalanuvchi tomonidan belgilangan (user-defined) funksiyalardir. Oldindan belgilangan funksiyalar (predefined) - bu dasturga allaqachon o'rnatilgan, qurilgan funksiyalardir. Foydalanuvchi tomonidan belgilangan funksiyalar (user-defined) esa maxsus vazifalarni bajarish uchun dasturga kiritadigan funksiyalardir.

Funksiyalarni elon qilishni ham bir necha turlari bor, ular Function Declaration, Function Expression, va Arrow Function

Function declaration - Function obyektini yaratadi. Har safar chaqirilganda, oxirgi bajarilgan return bayonotida ko'rsatilgan qiymatni qaytaradi. Agar funksiya oxirigacha yetib, return topilmasa, undefined qaytaradi.

// function declartion
function shahzodCodes() {
console.log('ShahzodCodes');
}

// anonymous function
function() {
console.log('ShahzodCodes');
}

// constructor function
function ShahzodCodes() {
console.log('ShahzodCodes');
}

const shahzodCodes = new ShahzodCodes();


Function expression - Funksiya deklaratsiyasiga juda o'xshash, deyarli bir xil sintaksisga ega.
Asosiy farq - funksiya nomi ixtiyoriy, bu anonim funksiyalar yaratish imkonini beradi. IIFE (Darhol Chaqiriladigan Funksiya Ifodasi) sifatida ishlatilishi mumkin.

// function expression
const shahzodCodes = function() {
console.log('ShahzodCodes');
};

// IIFE (Darhol Chaqiriladigan Funksiya)
(function () {
console.log("ShahzodCodes");
})();


Arrow function expression - An'anaviy funksiya ifodasiga nisbatan ixchamroq alternativa. Ba'zi semantik farqlar va cheklovlarga ega:

1. O'zining this, arguments, yoki super bog'lanishlari yo'q.
2. Metod sifatida ishlatilmasligi kerak.
3. Konstruktor sifatida ishlatib bo'lmaydi (new bilan chaqirilsa TypeError yuzaga keladi).
4. new.target kalit so'ziga kirish imkoni yo'q.
5. Tanasida yield ishlatib bo'lmaydi va generator funksiya sifatida yaratib bo'lmaydi.

// arrow function
const shahzodCodes = () => console.log('ShahzodCodes');


Batafsil shu post da o'qishingiz mumkun, post da xatolar bo'lishi mumkun chunki subyektiv fiklar bor shu uchun MDN dan foydalaning.

https://medium.com/sessionstack-blog/how-javascript-works-the-different-ways-of-declaring-a-function-5-best-practices-8a0324c06fe2


JavaScript da logical operator lar haqida gaplashamiz. Ular 4 ta bo'lib || (OR), && (AND), ! (NOT), ?? (Nullish Coalescing).

Dasturlashda mantiqiy OR (YOKI) operatori faqat boolean qiymatlarni boshqarish uchun mo'ljallangan. Agar uning argumentlaridan birortasi true bo'lsa, u true qaytaradi, aks holda false qaytaradi.

alert( true || true ); // true
alert( false || true ); // true
alert( true || false ); // true
alert( false || false ); // false


Klassik dasturlashda, AND (VA) operatori quyidagicha ishlaydi. Agar ikkala operand ham haqiqiy (truthy) bo'lsa, true qaytaradi, aks holda false qaytaradi.

alert( true && true ); // true
alert( false && true ); // false
alert( true && false ); // false
alert( false && false ); // false


Operator ! (NOT) bitta argumentni qabul qiladi va quyidagi amallarni bajaradi. Operandni boolean turiga o'zgartiradi: true/false, va qarama-qarshi qiymatni qaytaradi.

alert( !true ); // false
alert( !0 ); // true


Nullga tekshiruvchi (nullish coalescing) (??) operatori - bu mantiqiy operator bo'lib, u quyidagicha ishlaydi. Agar chap tomondagi operand null yoki undefined bo'lsa, o'ng tomondagi operandni qaytaradi. Aks holda, chap tomondagi operandni qaytaradi. Bu operatorning asosiy vazifasi - qiymat "nullish" (ya'ni null yoki undefined) bo'lganda, standart qiymatni belgilashdir.

const foo = null ?? 'default string';
// Expected output: "default string"

const baz = 0 ?? 42;
// Expected output: 0


#foydali


Anchadan beri task tashlamagan edim. Bugun bir qiziq taskni codewars da yechgandim, hamma xar xil javob lar bilan yechgan ekan, sizlarni ham javoblaringizni bilgim keldi 🤓

#task
String da kelgan birinchi qaytarilgan harf ni topish kerak(ketma ket bo'lishi shart emas), agar unday harf bo'lmasa undefined qaytishi kerak.

function firstRepeated(s){
// code
}


Test keyslar:
firstRepeated('tweet') // 't'
firstRepeated('like') // undefined
firstRepeated('123123') // '1'
firstRepeated('ode to joy') // 'o


#dailytips
Navigator.onLine brauzerning onlayn holatini qaytaradi. Property boolean qiymatini qaytaradi, bunda true onlayn va false oflayn ma'nosini anglatadi. Property brauzerning tarmoqqa ulanish qobiliyati o'zgarganda yangilanishlarni yuboradi. Yangilanish foydalanuvchi havolalarni ochganda yoki skript masofadagi sahifani so'raganda sodir bo'ladi.

Masalan, foydalanuvchilar internet aloqasini yo'qotgandan so'ng darhol havolalarni bosganlarida xususiyat false qiymatini qaytarishi kerak.

if (navigator.onLine) {
console.log("online");
} else {
console.log("offline");
}


Brauzerlar bu xususiyatni turlicha amalga oshiradi.
Chrome va Safari'da, agar brauzer mahalliy tarmoq (LAN) yoki routerga ulana olmasa, u oflayn hisoblanadi; boshqa barcha holatlar true qiymatini qaytaradi. Shunday qilib, brauzer false qiymatini qaytarganda oflayn ekanligini taxmin qilishingiz mumkin, ammo true qiymati brauzer internetga kira olishini anglatmaydi deb hisoblash mumkin emas. Masalan, kompyuter doimo "ulangan" bo'lgan virtual ethernet adapterlari mavjud virtualizatsiya dasturini ishga tushirayotgan holatlarda soxta ijobiy natijalar olishingiz mumkin. Shuning uchun, agar siz haqiqatan ham brauzerning onlayn holatini aniqlashni istasangiz, qo'shimcha tekshirish usullarini ishlab chiqishingiz kerak.

Tarmoq holatidagi o'zgarishlarni online va offline hodisalarini tinglash orqali kuzatishingiz mumkin.

window.addEventListener(
"offline", (e) => {
console.log("offline");
});

window.addEventListener(
"online", (e) => {
console.log("online");
});


Bu property bizga offline application lar yaratishda yordam beradi, yoki qaysidur malumotlarni user interneti bilan muammo bo'lgan paytda user store ga saqlab keyin internet stabil bo'lgan vaqtda backend ga jo'natishda ham qo'l keladi.


#dailytips
CSS da position xossasi (property) haqida gaplashamiz. Ko’pchilik interview larda beriladigan savol bo’lib to’g’ri va to’liq javob berilishni talab qilishadi, va bugun biz buni ko’rib chiqamiz.

CSS position elementning document da qanday joylashganligini belgilaydi, top, right, bottom, va left xossalari joylashtirilgan elementlarning yakuniy joylashuvini aniqlaydi.

CSS position qiymatlari:


position: static;
position: relative;
position: absolute;
position: fixed;
position: sticky;


position: static


Element normal flow bo'yicha joylashtiriladi. top, right, bottom, left va z-index xossalari hech qanday ta'sir ko'rsatmaydi.

position: relative


Element normal flow bo'yicha joylashtiriladi, so'ngra top, right, bottom va left qiymatlariga asoslanib o'ziga nisbatan siljitiladi. Bu siljish boshqa elementlarning joylashuviga ta'sir qilmaydi; shuning uchun, sahifa tartibida element uchun ajratilgan joy xuddi position qiymati static bo'lgandek bo'ladi.

position: absolute


Element normal flow dan olib tashlanadi va sahifa tartibida element uchun joy ajratilmaydi. Element o'zining eng yaqin joylashtirilgan ota-elementiga (agar mavjud bo'lsa) yoki dastlabki o'z ichiga oluvchi blokka nisbatan joylashtiriladi. Uning yakuniy joylashuvi top, right, bottom va left qiymatlari orqali aniqlanadi.

position: fixed


Element normal flow dan olib tashlanadi va sahifa tartibida element uchun joy ajratilmaydi. Element o'zining dastlabki o'z ichiga oluvchi blokiga nisbatan joylashtiriladi, bu viewport hisoblanadi. Uning yakuniy joylashuvi top, right, bottom va left qiymatlari orqali aniqlanadi. Element har bir sahifada bir xil joyga joylashtiriladi.

position: sticky


Element normal flow bo'yicha joylashtiriladi, so'ngra eng yaqin aylantiriladigan ota-element va o'z ichiga oluvchi blokka nisbatan, top, right, bottom va left qiymatlariga asoslanib siljitiladi.
Bu qiymat har doim yangi joylashuv kontekstini yaratadi. Yopishqoq element "aylantirilish mexanizmi"ga ega bo'lgan eng yaqin ota-elementiga yopishadi (bu overflow xossasi hidden, scroll, auto yoki overlay bo'lganda yaratiladi).

Batafsil bu link orqali o’qing.


Interview ni ko’rganlar bormi)? Reaksiya bilan commentlarga yozilar, nima kamchiliklar bo’ldi yoki qaysi savollar yoqdi/yoqmadi shu haqida fikrilarni bilmoxchi edik, shundan kelib chiqib yangi interview vaqtini ham aniqlimiz 🤓


Shallow va Deep copy haqida gaplashamiz. Bu 2 holatdagi copy qilish usuli bizga bir obyekt dan boshqa bir obyekt yaratish uchun kerak bo'ladi.

Shallow Copy yangi obyekt yaratadi, lekin faqat ichma-ich joylashgan obyektlarning reference larini ko'chiradi. Agar bir obyekt boshqa obyektlarni o'z ichiga olsa, uning ichma-ich joylashgan obyektlari emas, faqat reference lari ko'chiriladi.

Object.assign() method yoki spread operator orqali shallow copy ni amalga oshirsak bo'ladi

const original = { name: "Shahzod", address: { city: "Tashkent" } };
const shallowCopy = { ...original };
shallowCopy.address.city = "New York";
console.log(original.address.city);
Output: "New York"


Deep Copy esa bizga bir obyekt dan boshqa bir yangi obyekt yaratgan holatda uning barcha ichma-ich malumotlarini ( obyektlarini ) rekursiv yo'l bilan ko'chiradi. Bu holatda yangi obyekt ko'chirilgan obyektdan butunlay uzuladi va reference qolmidi.

Deep Copy ni biz JSON.stringify & JSON.parse orqali rekursiv yo'l bilan qila olamiz yoki ES2022 da chiqqan method structuredClone() ni ishlatsak bo'ladi.

const original = { name: "Shahzod", address: { city: "Tashkent" } };
const deepCopy = structuredClone(original);
deepCopy.address.city = "New York";
console.log(original.address.city);
Output: "Tashkent"


#foydali

760 2 6 13 11

Closure haqida gaplashamiz. Bu termin manosi 2 ta funksiya kombinatsiyasi bo'lib, ichki funksiyaning tashqi parent funksiyani holatiga (lexical environment) kira olishi deb bilsak, boshqacha qilib aytganda ichki funksiyaning tashqi parent funksiya doirasiga (scope) kirish imkonini beradi. Closure har bir funksiya yaratilish vaqtida hosil bo'ladi.

#foydali


Interview tugadi, kirib live kuzatganlarga kotta rahmat, bir sabab tufayli kira olmaganlarga Youtube ga qo’ydik.




Bu postda yangi bir yo'nalish haqida gapirib o'tkan edim, yani #interview yo'nalishini, do'stimiz @fozilovkamron bilan bugun Youtube da strim qilamiza soat 19:00 da, link ni shu yerga tashliman, xohlagan odam bemalol kirib, ko'rib bilimini oshirishi yoki top company (UZUM) larda qanaqa savollar berilishi ni bilib olishingiz mumkun.

Bizni kutazib boring linkni yaqin daqiqalarda tashliman.


#dailytips
Html da Data Attribute lar bilan ishlashda juda ko'p savollar bo'ladi, shu savollar ga javob berish uchun post topishga xarakat qildim.
O'zi data-attribute lar orqali nimalar qila olamiz ?. Data attribute lar ni
data-*

bilan elon qilishni maslahat berishadi, chunki agar ular ni
data-user-width

emas width deb elon qilsak bu html ni qoidalarini buzadi.

Data attribute lar value siz ham bo'lishi mumkun.

va turli xil value bilan ham

lekin iloji boricha to'gri value yozishga harat qilish kerak ( pastdagi variant noto'gri)

va siz dash bilan data-attribute nomini uzunroq yozishingiz mumkun


Batafsil bu link orqali o'qishingiz mumkun.

Happy coding 🥳


String methodlar haqida gapirishni davom etamiz. Ko'pchilik manimcha 2 ta string ni bita qilish uchun yani
'Java' + 'Script' yoki `${Java}{Script}`

qilib bir string qilishadi, bugun esa yana bir qo'shimcha yo'lini ko'ramiz yani String.prototype.concat() haqida gaplashamiz. Bu method bizga string argumentlarini berilgan string ga birlashtirib beradi va yangi string qaytaradi.

#foydali


#dailytips
CSS haqida qancha gapirsam ham kam, juda foydali yana bir CSS funksiyalar dan :where() haqida gaplashamiz. Bu funksiya pseudo class bolib argument sifatida selektor lar ro'yxatini qabul qilib, berilgan style larni ro'yxatdagi barcha element larga amal qildiradi.

header a:hover,
main a:hover,
footer a:hover {
color: green;
text-decoratíon: underline;
}


Yuqorida bizda 3 ta element bor lekin elementlar soni ko'paygan sari kod ni o'qish va u bilan ishlash qiyinlashadi. :where() shu joyda kerak bo'ladi.

:where(header, main, footer) a:hover {
color: red;
text-decoratíon: underline;
}


Batafsil bu link orqali malumot olishingiz mumkun.

Happy Coding 🥳


Salom developer lar 👋🏻, charchashlar yo’qmi)? Dam olib ham turish kerak, keyingi kun ni yaxshi boshlab olish uchun va hafta davomidagi charchoqlardan xoli bo’lish uchun ham, lekin man kecha 17 soat (8.5 soat dan borish-kelish) moshina haydab buxoroga borib qaytim shunga, kecha, bugun postlar bo’lmadi 🥴
Ertadan postlar, tasklar bo’ladi va yana bir yangi yo’nalish ni qo’shvomiza, tayyormisizlar?

Commentlarda tahmin qilib ko’rilar qaysi yo’nalish bo’lishini)

403 0 0 15 10

String method haqida gapirdik va shu mavzu bo'yicha task.

#task
Berilgan string ni capitalize (text ning 1chi harfi har doim kotta harf bo'lishi kerak) qilish uchun funksiya yozing.

function capitalize(string) {
// code
}


Test cases:
'Hello' -> 'Hello'
'hello' -> 'Hello'
'hELLO' -> 'Hello'
'HeLLo' -> 'Hello'

Javoblarni commentda qoldiring!


String method lar haqida gaplashamiz. Ulardan bu 2 si bizga string lar bilan ishlashda ancha yordam beradi, yani toUpperCase() stringni bosh harflarga aylantirib bersa toLowerCase() esa bosh harflarni kichik harflarga alishtirib beradi.

#foydali


Ko'pchilik tasklar yechishga qiziqadi shekilli Xa digan javobni belgilashipti, shundan kelib chiqib yangi yo'nalishni boshladik 🤓

#task
2 ta qizil simbol xar 2 ta ko'k simbol o'rtasida joylashgan bo'lib, n ta ko'k simbollar bor va shu ko'k simbollar dan kelib chiqqan holatda nechta qizil simbollar borligini topishimiz kerak. (hint: agar ko'k simbollar 2 tadan kam bo'lsa 0 qaytishligi kerak)
‘’’
function countRedBeads(n) {
// code
}
‘’’
Test cases:
Test.assertEquals(countRedBeads(0), 0);
Test.assertEquals(countRedBeads(1),0);
Test.assertEquals(countRedBeads(3), 4);
Test.assertEquals(countRedBeads(5), 8);

Javoblarni commentda qoldiring!

Показано 20 последних публикаций.

486

подписчиков
Статистика канала