JavaScript asoslari

Strelka funksiyalari, asoslari

Funksiya ifodalaridan ham qisqaroq va qulayroq sintaksis mavjud โ€” strelka funksiyalari (arrow functions). Ular ayniqsa callback'lar uchun juda qulay.

Umumiy sintaksis

Strelka funksiyasi shunday yaratiladi:

let funk = (arg1, arg2, ...) => ifoda;

Bu โ€” quyidagi Function Expression ning qisqa varianti:

let funk = function(arg1, arg2, ...) {
  return ifoda;
};

Ya'ni funk argumentlarni oladi, ifoda ni hisoblaydi va natijasini qaytaradi. Amaliy misol:

strelka.js
// natija shu yerda chiqadi

Bu yerda (a, b) => a + b ikkita a va b argument oluvchi funksiya. Chaqirilganda u a + b ni hisoblab qaytaradi โ€” return so'zi ham, figurali qavs ham kerak emas!

Bir yoki nol argument

Agar funksiyada faqat bitta argument bo'lsa, qavslarni tashlab yuborish mumkin:

strelka-bir.js
// natija shu yerda chiqadi

Agar argument umuman bo'lmasa, bo'sh qavs qo'yiladi (uni tashlab bo'lmaydi):

strelka-nol.js
// natija shu yerda chiqadi

Ko'p qatorli strelka funksiyalari

Yuqoridagi misollar => ning chap tomonidan argumentlarni, o'ng tomonidan bitta ifodani oldi. Ba'zan bir nechta amal yoki qatordan iborat murakkabroq kod kerak bo'ladi. Bunda figurali qavs ishlatiladi:

strelka-kop.js
// natija shu yerda chiqadi
Muhim farq! Figurali qavs { } ishlatsangiz, natijani qaytarish uchun return ni albatta yozishingiz kerak. Qavssiz variantda esa return avtomatik nazarda tutiladi. { } ni yozib, return ni unutish โ€” keng tarqalgan xato (funksiya undefined qaytaradi).

Xulosa qilib: bir ifoda uchun qavssiz (=> ifoda), bir nechta qator uchun figurali qavs va return (=> { ...; return ...; }).

Qachon qulay?

Strelka funksiyalari qisqa, bir martalik funksiyalar uchun juda qulay โ€” ayniqsa ularni boshqa joyga yozib o'tirishga hojat yo'q bo'lgan callback'lar uchun. Ular kodni ixcham va o'qishga oson qiladi.

Oldingi darsdagi "sora" misolini strelka funksiyalari bilan solishtiring โ€” kod ancha qisqardi:

strelka-callback.js
// natija shu yerda chiqadi

Callback sifatida โ€” massivlar bilan

Strelka funksiyalari massiv metodlari bilan (masalan forEach, map) juda tez-tez ishlatiladi. Ular haqida keyinroq batafsil o'rganamiz, hozircha strelka funksiyaning qulayligini ko'ramiz:

strelka-massiv.js
// natija shu yerda chiqadi

Xuddi shu kodni oddiy funksiya ifodasi bilan yozganingizda uzunroq va ko'proq "shovqinli" bo'lardi. Strelka funksiyasi bu yerda niyatni aniq ko'rsatadi.

Strelka funksiyalarining this bilan bog'liq yana bir muhim xususiyati bor, u oddiy funksiyalardan farq qiladi. Ammo bu ilg'or mavzu โ€” uni obyektlar va this ni o'rgangandan keyin ko'rib chiqamiz. Hozircha strelka funksiyani "qisqa yozuv" sifatida bilib qo'yish yetarli.

Xulosa