Funksiya yozishning uchta usuli
// 1. function declaration
function add(a, b) {
return a + b;
}
// 2. function expression (assigned to a variable)
const add = function (a, b) {
return a + b;
};
// 3. arrow function
const add = (a, b) => a + b;Uchala usul ham chaqiriladigan funksiya hosil qiladi. Arrow shakli zamonaviy kodda eng ko'p uchraydi, chunki u qisqa. Tanasi bitta ifodadan iborat bo'lsa, arrow funksiya uni avtomatik ravishda qaytaradi — return ham, qavslar ham kerak emas. Qavslar qo'shsangiz, yana aniq return yozishga qaytasiz:
const double = (n) => n * 2; // implicit return
const double = (n) => { return n * 2; }; // explicit returnBir nozik jihat: obyektni yashirin (implicit) qaytarish uchun uni qavs ichiga oling, shunda JS { belgisini funksiya tanasi sifatida o'qimaydi:
const point = (x, y) => ({ x, y });Parametrlar, argumentlar va standart qiymatlar
Parametrlar — bu ta'rifdagi nomlar; argumentlar — bu siz uzatadigan haqiqiy qiymatlar. Parametrlarga standart qiymatlar berishingiz mumkin:
function greet(name = "friend") {
return `Hello, ${name}!`;
}
greet(); // "Hello, friend!"
greet("Ada"); // "Hello, Ada!"Agar funksiyani parametrlaridan kamroq argument bilan chaqirsangiz, yetishmayotganlari undefined bo'ladi (yoki o'z standart qiymati bo'ladi). Ortiqcha argumentlar oddiygina e'tiborga olinmaydi.
Qaytariladigan qiymatlar
Aniq return yozmagan funksiya undefined qaytaradi. return shuningdek funksiyadan darhol chiqib ketadi — undan keyingi kod ishlamaydi:
function firstPositive(nums) {
for (const n of nums) {
if (n > 0) return n; // exits as soon as we find one
}
return null; // reached only if none found
}Scope: o'zgaruvchi qayerda ko'rinadi
Scope — bu o'zgaruvchidan foydalanish mumkin bo'lgan kod hududi. let va const block-scoped — ular faqat eng yaqin { } ichida yashaydi:
if (true) {
const secret = 42;
}
console.log(secret); // ReferenceError — secret doesn't exist out hereFunksiyalar ham o'zining scope'ini hosil qiladi. Funksiya ichida e'lon qilingan o'zgaruvchi undan tashqarida ko'rinmaydi. Nomlar to'qnashuvidan shunday qochasiz: ikkita funksiya bir-biriga xalaqit bermasdan har biri o'zining count o'zgaruvchisiga ega bo'lishi mumkin.
Scope chain
Ichki kod atrofidagi scope'lardagi — o'zi joylashgan funksiya, uning atrofidagi funksiya va nihoyat global scope'dagi — o'zgaruvchilarni o'qiy oladi. Bu joylashuv scope chain deb ataladi:
const outer = "I'm outside";
function show() {
console.log(outer); // works — reaches up the chain
}Qidiruvlar faqat tashqariga yo'naladi: ichki scope'lar tashqariga qaray oladi, biroq tashqi scope'lar ichkariga qaray olmaydi. Bu bir tomonlama ko'rinuvchanlik closure'lar uchun asos bo'ladi, ularni o'rta darajada uchratasiz.
Intervyu maslahatlari
- Funksiyaning uchala shaklini va arrow implicit-return qoidasini ko'rsating.
- Obyektni arrow orqali qaytarish uchun
({ ... })qavslarini eslang. - Block scope'ni
ifichidagiletmisoli bilan tushuntiring. - Scope chain'ni bir tomonlama deb ta'riflang: ichki tashqini ko'radi, aksincha emas.
Muhokama
Hozircha izoh yo‘q
Muhokamada qatnashish uchun tizimga kiring.
KirishHozircha fikr yo‘q
Birinchi bo‘lib yozing: bu mavzuda nima yordam berdi — yoki nimani aniqroq tushuntirish kerak.