MakeFirstStep· Frontend + зеҳни сунъӣ

Дарси 5 · JavaScript

Функсияҳо

Функсия — як пораи кодест, ки ном дорад ва онро борҳо ва борҳо иҷро кардан мумкин аст. Тугмаи «Харидан», санҷиши парол, ҳисоби маблағи сабад — паси ҳар чунин амал дар сайт функсия меистад. Имрӯз мо фаро мегирем, ки онҳоро чӣ тавр нависем, фаҳмем ва кодҳои дигаронро хонем.

  • Функсияҳоро бо ду усул эълон кардан: Declaration ва Expression
  • Функсияҳои тирдори кӯтоҳ навиштан
  • Тавассути параметрҳо додаҳо фиристодан ва қиматҳои пешфарзро муайян кардан
  • Натиҷаро тавассути return баргардондан
  • Фаҳмидани он, ки тағйирёбанда дар куҷо «намоён» аст — доираи намоёнӣ
Бо ин саҳифа чӣ тавр кор кардан лозим

Тамоми кодҳо дар заминаи торик бо тугмаи ▶ Иҷро — зинда мебошанд. Онҳоро худи ҳамин ҷо тағйир додан ва натиҷаро фавран дар консол, дар зери код, дидан мумкин аст. Агар вайрон кардед — ↺ Аз нав-ро пахш кунед. Ишораҳо ба вазифаҳо дар зери қулф 🔒 пинҳон шудаанд: аввал худатон кӯшиш кунед, ишораро танҳо дар сурати печидан кушоед.

01 Функсия чист. Function Declaration

Тасаввур кунед, ки шумо бояд се маротиба дар ҷойҳои гуногуни барнома корбарро салом диҳед. Бе функсияҳо код чунин менамояд:

Бе функсия: як чизро такрор мекунем · Ctrl + Enter
console.log("Ассалому алейкум!");
console.log("Добро пожаловать в MakeFirstStep");

// ... ягон коди дигар ...

console.log("Ассалому алейкум!");
console.log("Добро пожаловать в MakeFirstStep");

// ... ва боз як бор ...

console.log("Ассалому алейкум!");
console.log("Добро пожаловать в MakeFirstStep");

Кор мекунад, аммо тасаввур кунед, ки матнро бояд иваз кард. Шумо бояд онро дар ҳама ҷо ёфта ислоҳ кунед — ва дар ягон ҷо ҳатман фаромӯш мекунед. Функсия ин мушкилро ҳал мекунад: мо амалро як бор тавсиф карда, ба он ном медиҳем, баъд онро танҳо бо ном даъват мекунем.

Бо функсия · Ctrl + Enter
function greet() {
  console.log("Ассалому алейкум!");
  console.log("Добро пожаловать в MakeFirstStep");
}

greet();
greet();
greet();
Монандӣ аз ҳаёт

Функсия — ин дастур (рецепт) аст. Дастури оши палавро як бор менависанд: чиро гирифтан ва бо кадом тартиб пухтан. Вақте палав мехоҳем — онро аз нав ихтироъ намекунем, балки дастурро мекушоем ва аз рӯи он мепазем. Навиштани дастур — ин эълон кардани функсия аст. Аз рӯи дастур пухтан — даъват кардани функсия. Дастурро ҳар қадар бор истифода бурдан мумкин аст.

Функсия аз чӣ иборат аст

Усуле, ки мо ҳозир истифода бурдем, Function Declaration — «эълони функсия» ном дорад. Онро аз рӯи қисмҳо ҷудо мекунем:

function greet(name) { console.log("Салом, " + name); }

greet("Мадина");
Дар боло — эълон (дастур), дар поён — даъват (аз рӯи дастур мепазем)
function
Калимаи калидӣ. Ба JavaScript мегӯяд: «ҳозир функсия меояд».
Ном
Бо кадом ном ба функсия муроҷиат мекунем. Одатан ин феъл бо забони англисӣ аст: greet, showMenu, calcTotal.
Параметрҳо
Дар қавсайни доира. Ин «додаҳои вурудии» функсия мебошанд. Қавсайн ҳамеша навишта мешаванд, ҳатто агар холӣ бошанд.
Бадан
Код дар қавсайни фигурӣ { }. Ҳар дафъае, ки функсияро даъват мекунанд, иҷро мешавад.
Даъват
Номи функсия ва қавсайни доира: greet(). Маҳз қавсайн функсияро ба кор медароранд.

Ҳангоми даъват чӣ рӯй медиҳад — қадам ба қадам

Таҳрир кардан мумкин аст · Ctrl + Enter
function welcome(name) {
  console.log("Хуш омадед, " + name + "!");
}

welcome("Мадина");   // → Хуш омадед, Мадина!
welcome("Фарход");   // → Хуш омадед, Фарход!
  1. JavaScript эълонро мебинад ва ба ёд мегирад: функсияи welcome мавҷуд аст. Коди дохили он ҳоло иҷро намешавад — дастур навишта шудааст, аммо пухтан ҳоло оғоз нашудааст.
  2. Даъватро вомехӯрад — welcome("Мадина") — ва ба дохили функсия «ҷаҳида медарояд».
  3. Қиматро ба параметр мемонад: name ба "Мадина" баробар мешавад.
  4. Баданро иҷро мекунад — сатрро ба консол мебарорад.
  5. Бармегардад ба он ҷое, ки аз он функсияро даъват карда буданд, ва минбаъд — ба даъвати навбатӣ мегузарад, ки дар он name аллакай "Фарход" мешавад.

Функсияҳоро чӣ тавр ном гузорем

  • Ном амал-ро тавсиф мекунад: showPrice, checkPassword, sendMessage.
  • Бо услуби camelCase менависем: калимаи аввал бо ҳарфи хурд, ҳар як калимаи баъдӣ — бо ҳарфи калон.
  • Танҳо ҳарфҳои лотинӣ. Кириллица аз ҷиҳати техникӣ кор мекунад, аммо дар лоиҳаҳои воқеӣ чунин намениванд.
  • Як функсия — як амал. Агар дар ном мехоҳед «ва» нависед (checkAndSendAndSave), пас ин бояд якчанд функсия бошад.
Хатои маъмул

Қавсайнро ҳангоми даъват фаромӯш кардан. greet бе қавсайн — танҳо «зикр»-и функсия аст, он кор намекунад. Бояд greet() навишт.

Таҳрир кардан мумкин аст · Ctrl + Enter
function greet() {
  console.log("Салом!");
}

greet;               // ҳеҷ чиз рӯй намедиҳад — функсия даъват нашудааст
console.log(greet);  // → ƒ greet() — худи функсия баромад мекунад, на натиҷаи он
greet();             // → Салом!

Амалия: мустаҳкам мекунем

Аз содда оғоз мекунем: функсияро эълон кардан ва даъват намудан.

ВАЗИФАИ 1.1

Салом ба академия

осон

Функсияи sayHello-ро эълон кунед, ки сатри Ассалому алейкум, MakeFirstStep!-ро ба консол мебарорад. Онро се бор даъват кунед.

Таҳрир кардан мумкин аст · Ctrl + Enter
// функсияи sayHello-ро инҷо эълон кунед


// онро 3 бор даъват кунед
Натиҷаи интизоршаванда
Ассалому алейкум, MakeFirstStep!
Ассалому алейкум, MakeFirstStep!
Ассалому алейкум, MakeFirstStep!
Ишора 1

Тарҳи эълон: калимаи function, ном, қавсайни доираи холӣ, қавсайни фигурӣ бо код дар дохил.

Ишора 2

Дар дохили бадан — як console.log(...). Даъват — ин ном ва қавсайн аст: sayHello(), се сатр паси ҳам.

ВАЗИФАИ 1.2

Ҷадвали гурӯҳ

осон

Функсияи showSchedule-ро нависед, ки ҷадвали дарсҳоро барои як ҳафта — се сатр — бароварда медиҳад. Функсияро як бор даъват кунед.

Таҳрир кардан мумкин аст · Ctrl + Enter
// функсияи showSchedule се сатри ҷадвалро мебарорад
Натиҷаи интизоршаванда
Понедельник — HTML и CSS
Среда — JavaScript
Пятница — Практика с ИИ
Ишора 1

Дар бадани функсия метавонад ҳар қадар сатри код бошад. Онҳо бо тартиб, аз боло ба поён иҷро мешаванд.

Ишора 2

Дар дохили { } — се даъвати console.log, барои ҳар рӯз яктоӣ. Фаромӯш накунед, ки функсияро пас аз эълон даъват намоед.

ВАЗИФАИ 1.3

Хуш омадед!

миёна

Функсияи welcomeStudent-ро бо як параметри name нависед. Он бояд салому алейки шахсиро барояд. Онро барои се донишҷӯи нав — Зарина, Рустам ва Нилуфар — даъват кунед.

Таҳрир кардан мумкин аст · Ctrl + Enter
// function welcomeStudent(name) { ... }
Натиҷаи интизоршаванда
Хуш омадед, Зарина! Рады видеть вас в группе.
Хуш омадед, Рустам! Рады видеть вас в группе.
Хуш омадед, Нилуфар! Рады видеть вас в группе.
Ишора 1

Параметри name — «қуттии холӣ» аст, ки ҳар дафъаи даъват номи нав ба он гузошта мешавад. Ном ҳангоми даъват дар қавсайн дода мешавад: welcomeStudent("Зарина").

Ишора 2

Сатрро бо сатри қолабӣ дар нохунакҳои баръакс (backtick) ҷамъ кардан қулай аст: `Хуш омадед, ${name}! ...`

02 Function Expression

Дар JavaScript функсия — ҳамон қимат-и монанди адад ё сатр аст. Ва ҳар қимате ро ба тағйирёбанда гузоштан мумкин аст. Ин усул Function Expression — «ифодаи функсионалӣ» ном дорад.

Таҳрир кардан мумкин аст · Ctrl + Enter
// Declaration — эълон
function sayHi() {
  console.log("Салом!");
}

// Expression — функсия ба тағйирёбанда гузошта мешавад
const sayBye = function () {
  console.log("Хайр, то пагох!");
};

sayHi();   // → Салом!
sayBye();  // → Хайр, то пагох!

Ба варианти дуюм бодиққат нигаред:

  • пас аз калимаи function ном нест — чунин функсия беном (аноним) номида мешавад. Номи он — номи тағйирёбандаи sayBye аст;
  • мо const-ро истифода мебарем, то функсияро тасодуфан аз нав сабт накунем;
  • дар охир нуқтавергул ; меистад — чунки ин ҷойгиркунии оддӣ аст, мисли const x = 5;.
Монандӣ аз ҳаёт

Declaration — дастурест, ки дар китоб дар зери сарлавҳаи «Оши палав» чоп шудааст. Expression — ҳамон дастур, аммо дар корт навишта ва ба қуттӣ бо номи sayBye гузошташуда. Аз рӯи ҳарду пухтан мумкин аст. Фарқ дар он аст, ки дастур кай дастрас мешавад — дар бораи ин дар поён.

Функсия ҳамчун қимат

Азбаски функсия — қимат аст, онро ба тағйирёбандаи дигар додан мумкин аст. Диққат диҳед: бе қавсайн мо худи функсия-ро медиҳем, на ин ки онро даъват мекунем.

Таҳрир кардан мумкин аст · Ctrl + Enter
const greet = function (name) {
  console.log(`Салом, ${name}!`);
};

const hello = greet;   // акнун як функсия ду ном дорад
hello("Шахром");       // → Салом, Шахром!
greet("Шахром");       // → Салом, Шахром!

Маҳз ҳамин ғоя — «функсияро ҳамчун қимат додан мумкин аст» — дар дарси оянда асосӣ мешавад, вақте ки мо функсияҳоро ба методҳои массиви map ва filter медиҳем.

Фарқи асосӣ: hoisting («боло бардорӣ»)

Пеш аз иҷрои код, JavaScript файлро зуд аз назар мегузаронад ва ҳамаи функсияҳоеро, ки тавассути Declaration эълон шудаанд, пешакӣ ба ёд мегирад. Бинобар ин онҳоро ҳатто болотар аз ҷое, ки навишта шудаанд, даъват кардан мумкин аст. Инро hoisting — «боло бардорӣ» меноманд.

Таҳрир кардан мумкин аст · Ctrl + Enter
showMenu(); // → Меню: самбуса, курутоб, чой — кор мекунад, ҳарчанд функсия поёнтар аст!

function showMenu() {
  console.log("Меню: самбуса, курутоб, чой");
}

Бо Expression ин тавр намебарояд: тағйирёбандаи const танҳо дар ҳамон сатре пайдо мешавад, ки онро эълон кардаанд. То ин сатр он танҳо вуҷуд надорад.

Ин код хато медиҳад · Ctrl + Enter
showPrices(); // ✖ хато: ба тағйирёбанда пеш аз эҷод шуданаш муроҷиат мекунем

const showPrices = function () {
  console.log("Самбуса — 5 сомони");
};
Function DeclarationFunction Expression
Намуди зоҳирӣfunction f() {}const f = function () {};
Пеш аз эълон даъват кардан мумкин аст?Ҳа (hoisting)Не — хато мешавад
Нуқтавергул дар охирЛозим нестЛозим аст
Кай истифода бурданФунксияҳои асосии барномаВақте ки функсияро бояд ҳамчун қимат дод ё нигоҳ дошт
Маслиҳат

Ҳатто агар Declaration ба шумо иҷозат диҳад, ки функсияро «пеш» аз эълон даъват кунед, беҳтар аст чунин накунед. Код аз боло ба поён хонда мешавад: аввал эълон кардем — баъд истифода мебарем. Ин тавр фаҳмидани он барои шумо, ҳамкорон ва ёрдамчии ЗС осонтар аст.

Амалия: мустаҳкам мекунем

Навиштан тавассути тағйирёбандаро машқ мекунем ва бо hoisting сарукор мегирем.

ВАЗИФАИ 2.1

Ба Expression аз нав нависед

осон

Дар зер функсия дар шакли Declaration аст. Онро ба шакли Function Expression бо ҳамон ном аз нав нависед ва даъват кунед. Натиҷа набояд тағйир ёбад.

Буд (танҳо хондан)
function showAddress() {
  console.log("MakeFirstStep — Душанбе, проспект Рудаки");
}
showAddress();
Варианти шумо · Ctrl + Enter
// Function Expression-и шумо бо номи showAddress
showAddress();
Натиҷаи интизоршаванда
MakeFirstStep — Душанбе, проспект Рудаки
Ишора 1

Номи функсия ба номи тағйирёбанда табдил меёбад: const showAddress = ...

Ишора 2

Пас аз аломати = function () { ... } бе ном навишта мешавад, ва дар охири охир — нуқтавергул.

ВАЗИФАИ 2.2

Натиҷаро пешбинӣ кунед

миёна

Бе иҷрои код, шифоҳӣ ё дар дафтар ҷавоб диҳед: сатри аввал чиро мебарорад? Дар сатри сеюм чӣ рӯй медиҳад? Баъд иҷро кунед ва худро санҷед. Пас аз ин кодро ислоҳ кунед, то ҳарду функсия кор кунанд, ва ифодаи hi Expression боқӣ бимонад.

Таҳрир кардан мумкин аст · Ctrl + Enter
hello();
function hello() {
  console.log("Declaration сработал!");
}

hi();
const hi = function () {
  console.log("Expression сработал!");
};
Натиҷаи интизоршаванда пас аз ислоҳ
Declaration сработал!
Expression сработал!
Ишора 1

Ба ёд оред, ки кадом як аз ду усулро JavaScript ба боло «мебарад», ва кадомашро не.

Ишора 2

Хаторо даъвати hi() медиҳад: дар лаҳзаи даъват тағйирёбандаи hi ҳоло эҷод нашудааст. Фикр кунед, ки як сатрро ба куҷо гузарондан лозим аст.

ВАЗИФАИ 2.3

Нархномаҳо дар чойхона

миёна

Тавассути Function Expression функсияи showPrice-ро бо ду параметр эҷод кунед: dish (номи таом) ва price (нарх). Он нархномаро мебарорад. Онро барои се таом даъват кунед.

Таҳрир кардан мумкин аст · Ctrl + Enter
// const showPrice = ...

// Самбуса — 5, Курутоб — 35, Шакароб — 15
Натиҷаи интизоршаванда
Самбуса — 5 сомони
Курутоб — 35 сомони
Шакароб — 15 сомони
Ишора 1

Параметрҳо бо вергул номбар мешаванд: function (dish, price). Ҳангоми даъват аргументҳо бо ҳамон тартиб дода мешаванд.

Ишора 2

Қолаби сатр: `${dish} — ${price} сомонӣ`. Даъват чунин аст: showPrice("Самбуса", 5);

03 Параметрҳо, аргументҳо ва қиматҳои пешфарз

Функсия бе параметрҳо ҳар дафъа як чизро иҷро мекунад. Параметрҳо имкон медиҳанд, ки ба он додаҳои гуногун диҳем — ва он гоҳ як функсия дар ҳолатҳои гуногун кор мекунад.

Монандӣ аз ҳаёт

Барномаи таксӣ. Дар он шакле ҳаст бо майдонҳои «Аз куҷо» ва «То куҷо» — ин параметрҳо мебошанд: ҷой барои додаҳо. Вақте шумо мошин мефармоед ва «Сино» ва «Корвон»-ро менависед — ин аргументҳо мебошанд: қиматҳои мушаххасе, ки ба ин майдонҳо афтоданд. Шакл як аст, аммо сафарҳо ҳар дафъа гуногунанд.

Параметр
Ном дар қавсайн ҳангоми эълон-и функсия: function orderTaxi(from, to). Дар дохили функсия ин тағйирёбандаи оддӣ аст.
Аргумент
Қимати мушаххас ҳангоми даъват: orderTaxi("Сино", "Корвон").
Таҳрир кардан мумкин аст · Ctrl + Enter
function orderTaxi(from, to) {
  console.log(`Такси: ${from} → ${to}`);
}

orderTaxi("Сино", "Корвон");        // → Такси: Сино → Корвон
orderTaxi("Аэропорт", "Ботсад");    // → Такси: Аэропорт → Ботсад

Тартиб муҳим аст

Аргументҳо ба параметрҳо қатъиян бо тартиб меафтанд: якум — ба якум, дуюм — ба дуюм. Номҳои тағйирёбандаҳо ҳангоми даъват нақш намебозанд.

Таҳрир кардан мумкин аст · Ctrl + Enter
function orderTaxi(from, to) {
  console.log(`Такси: ${from} → ${to}`);
}

orderTaxi("Корвон", "Сино");   // → Такси: Корвон → Сино — ҷой иваз карда шуд, ба самти муқобил рафтанд!

Агар аргументҳо камтар ё бештар бошанд

JavaScript эътироз намекунад, агар аргументҳо на ба қадари параметрҳо дода шаванд:

  • аргумент намерасад — параметр қимати undefined («номуайян») мегирад;
  • аргументҳои изофӣ — оддӣ нодида гирифта мешаванд.
Таҳрир кардан мумкин аст · Ctrl + Enter
function orderTaxi(from, to) {
  console.log(`Такси: ${from} → ${to}`);
}

orderTaxi("Сино");                          // → Такси: Сино → undefined
orderTaxi("Сино", "Корвон", "с кондиционером"); // → Такси: Сино → Корвон

Қиматҳои пешфарз

То ба ҷои undefined чизи мантиқӣ бошад, ба параметр қимати пешфарз-ро мустақиман дар қавсайн, тавассути аломати = муайян кардан мумкин аст. Он танҳо дар сурате кор мекунад, ки аргумент дода нашуда бошад.

Таҳрир кардан мумкин аст · Ctrl + Enter
function greet(name = "гость") {
  console.log(`Салом, ${name}!`);
}

greet("Далер");  // → Салом, Далер!
greet();         // → Салом, гость!
Таҳрир кардан мумкин аст · Ctrl + Enter
function makeTea(sort = "зелёный", sugar = 0) {
  console.log(`Чой: ${sort}, сахара: ${sugar} ложки`);
}

makeTea();                 // → Чой: зелёный, сахара: 0 ложки
makeTea("чёрный");         // → Чой: чёрный, сахара: 0 ложки
makeTea("чёрный", 2);      // → Чой: чёрный, сахара: 2 ложки
makeTea(undefined, 2);     // → Чой: зелёный, сахара: 2 ложки

Ба сатри охирин диққат диҳед. Барои «гузаштан» аз аргументи аввал ва додани дуюм, undefined медиҳанд — он гоҳ қимати пешфарз кор мекунад.

Қапқон

Қимати пешфарз танҳо барои undefined кор мекунад. Агар 0, "" (сатри холӣ) ё null диҳед — маҳз ҳамон қимат истифода мешавад, на қимати пешфарз.

Таҳрир кардан мумкин аст · Ctrl + Enter
function setVolume(level = 50) {
  console.log("Громкость:", level);
}

setVolume();          // → Громкость: 50
setVolume(0);         // → Громкость: 0   — сифр қимати ҳақиқӣ аст
setVolume(undefined); // → Громкость: 50
Маслиҳат

Параметрҳои дорои қимати пешфарзро дар охир-и рӯйхат гузоред. Аввал додаҳои ҳатмӣ, баъд ғайриҳатмӣ: function bookTicket(city, seat = "у окна").

Амалия: мустаҳкам мекунем

Параметрҳо — чизест, ки бе он ягон функсияи воқеӣ намегузарад.

ВАЗИФАИ 3.1

Маршрутка

осон

Функсияи showRoute(number, from, to)-ро нависед, ки маълумот дар бораи маршрутка мебарорад. Онро барои ду маршрути мисол даъват кунед. Сипас онро бо додани танҳо рақам даъват кунед ва бинед, ки чӣ мешавад.

Таҳрир кардан мумкин аст · Ctrl + Enter
// showRoute(8, "Зелёный базар", "Испечак")
// showRoute(22, "Шохмансур", "92-й мкр")
Натиҷаи интизоршаванда
Маршрутка №8: Зелёный базар → Испечак
Маршрутка №22: Шохмансур → 92-й мкр
Маршрутка №5: undefined → undefined
Ишора 1

Се параметр — се қимат бо вергул ва дар қавсайн, ҳам ҳангоми эълон ва ҳам ҳангоми даъват.

Ишора 2

Барои сатри охирин showRoute(5)-ро даъват кунед. Фикр кунед, ки чаро from ва to undefined шуданд.

ВАЗИФАИ 3.2

Меҳмон ё донишҷӯ

осон

Функсияи enterRoom(name, room)-ро нависед. Агар ном дода нашавад, ба ҷои он бояд гость бошад. Агар аудитория дода нашавад — 101.

Таҳрир кардан мумкин аст · Ctrl + Enter
// function enterRoom(...) { ... }

enterRoom("Сабрина", 204);
enterRoom("Абдулло");
enterRoom();
Натиҷаи интизоршаванда
Сабрина, проходите в аудиторию 204
Абдулло, проходите в аудиторию 101
гость, проходите в аудиторию 101
Ишора 1

Қимати пешфарз мустақиман дар қавсайн навишта мешавад: (name = ..., room = ...).

Ишора 2

Сатри "гость" — дар нохунак, адади 101 — бе нохунак.

ВАЗИФАИ 3.3

Чиптаи қатор

миёна

Функсияи bookTicket(city, seat, travelClass) маълумот дар бораи чиптаро мебарорад. Шаҳр ҳатмист. Ҷойи пешфарз — у окна, синфи пешфарз — эконом. Се даъват анҷом диҳед, то айнан ҳамин натиҷа ҳосил шавад. Дар даъвати сеюм бояд синфро муайян кард, аммо ҷойро пешфарз гузошт.

Таҳрир кардан мумкин аст · Ctrl + Enter
// function bookTicket(...) { ... }
Натиҷаи интизоршаванда
Билет: Душанбе → Худжанд, место: у окна, класс: эконом
Билет: Душанбе → Бохтар, место: у прохода, класс: эконом
Билет: Душанбе → Куляб, место: у окна, класс: купе
Ишора 1

Барои seat ва travelClass қиматҳои пешфарз ҳастанд, барои city — не.

Ишора 2

Барои аз аргументи дуюм гузашта, сеюмро додан, ба ҷойи дуюм undefined гузоред.

04 return — функсия натиҷаро бармегардонад

То ҳол функсияҳои мо танҳо чизеро дар консол нишон медоданд. Аммо бештар функсия бояд натиҷаро ҳисоб кунад ва онро ба мо супорад, то мо минбаъд бо он кор карда тавонем: ҷамъ кунем, муқоиса намоем, дар саҳифа нишон диҳем. Барои ин калимаи return — «бозгардондан» ҳаст.

Таҳрир кардан мумкин аст · Ctrl + Enter
function sum(a, b) {
  return a + b;
}

const result = sum(10, 5);
console.log(result);          // → 15
console.log(sum(2, 3) * 10);  // → 50

Вақте функсия return-ро вомехӯрад, ӯ қиматро медиҳад ба ҷое, ки аз он даъват шуда буд. Тасаввур кардан мумкин аст, ки даъвати sum(10, 5) гӯё бо натиҷа — адади 15 иваз мешавад. Бинобар ин даъвати функсияро ба тағйирёбанда гузоштан, ба ифода ҷойгир кардан ё ба функсияи дигар додан мумкин аст.

Монандӣ аз ҳаёт

Шумо ба фурӯшанда дар Шоҳмансур барои хариди 70 сомонӣ 100 сомонӣ медиҳед. Фурӯшанда ҳисоб мекунад ва ба шумо бақияро бармегардонад — 30 сомонӣ. Ин пул акнун дар дасти шумост: сарф кардан, гузоштан, аз нав шумурдан мумкин аст. Ин маҳз return аст. Ва console.log — ин ҳамон вақт аст, ки фурӯшанда танҳо баланд мегӯяд «бақия 30!», вале пул намедиҳад. Шунидед — вассалом, чизе барои истифода нест.

console.log ва return — як чиз нестанд

Ин серталабтарин иштибоҳи навомӯзон аст. Муқоиса кунед:

Танҳо мебарорад

Натиҷа нишон дода шудааст, аммо онро гирифтан мумкин нест.

Таҳрир кардан мумкин аст · Ctrl + Enter
function getChange(paid, price) {
  console.log(paid - price);
}

const change = getChange(100, 70);
// → 30 (худи функсия баровард)
console.log("Сдача:", change);
// → Сдача: undefined 😕
Бармегардонад

Натиҷаро нигоҳ доштан ва истифода бурдан мумкин аст.

Таҳрир кардан мумкин аст · Ctrl + Enter
function getChange(paid, price) {
  return paid - price;
}

const change = getChange(100, 70);
console.log("Сдача:", change);
// → Сдача: 30 ✓

Қоида: агар функсия чизеро ҳисоб кунад — бигзор натиҷаро тавассути return баргардонад. Аммо ин ки онро ба консол ё саҳифа баровардан, коде ҳал мекунад, ки ин функсияро даъват кардааст.

Бе return функсия undefined бармегардонад

Таҳрир кардан мумкин аст · Ctrl + Enter
function doNothing() {
  const x = 5;
}

console.log(doNothing()); // → undefined

return функсияро фавран анҷом медиҳад

Пас аз return функсия кор карданро қатъ мекунад. Коди поёнтар аз он аллакай иҷро намешавад.

Таҳрир кардан мумкин аст · Ctrl + Enter
function test() {
  console.log("Шаг 1");
  return "готово";
  console.log("Шаг 2"); // ин сатр ҳеҷ гоҳ иҷро намешавад
}

console.log(test());
// → Шаг 1
// → готово

Аксар вақт аз ин истифода мебаранд, то дар сурати нодуруст будани чизе аз функсия барвақттар баромад. Чунин усулро «баромади барвақт» (guard) меноманд.

Таҳрир кардан мумкин аст · Ctrl + Enter
function canEnroll(age) {
  if (age < 14) {
    return "Пока рано: на курс принимают с 14 лет";
  }
  return "Добро пожаловать на курс!";
}

console.log(canEnroll(12)); // → Пока рано: на курс принимают с 14 лет
console.log(canEnroll(17)); // → Добро пожаловать на курс!

Қайд кунед: else дар ин ҷо лозим нест. Агар шарти аввал кор карда бошад, функсия аллакай дар return-и якум баромадааст ва ба дуюм намерасад.

Функсия метавонад true ё false баргардонад

Функсияҳои санҷишӣ одатан қимати мантиқӣ бармегардонанд. Онҳоро одатан бо is, has ё can дар аввал ном мегузоранд:

Таҳрир кардан мумкин аст · Ctrl + Enter
function isAdult(age) {
  return age >= 18;
}

console.log(isAdult(20)); // → true
console.log(isAdult(15)); // → false

if (isAdult(19)) {
  console.log("Можно получить водительские права");
}

Функсияҳо якҷоя кор мекунанд

Натиҷаи як функсияро фавран ба дигаре додан мумкин аст. Ин тавр аз функсияҳои хурди содда барномаҳои калон месозанд.

Таҳрир кардан мумкин аст · Ctrl + Enter
function getTotal(price, count) {
  return price * count;
}

function addDelivery(total) {
  return total + 10;
}

const order = addDelivery(getTotal(35, 3)); // 3 курутоб ба нархи 35 + расонидан 10
console.log(`К оплате: ${order} сомони`);  // → К оплате: 115 сомони
Қапқон

Қимати баргардониданиро пас аз return ба сатри дигар нагузаронед. JavaScript худаш пас аз калимаи return фавран нуқтавергул мемонад, ва функсия undefined бармегардонад.

Чӣ тавр НАБОЯД кард · Ctrl + Enter
function getCity() {
  return
    "Душанбе";
}

console.log(getCity()); // → undefined — қимат «гум шуд»

Амалия: мустаҳкам мекунем

Дар ҳамаи вазифаҳои зер функсия бояд натиҷаро баргардонад, ва онро коди берунӣ мебарорад.

ВАЗИФАИ 4.1

Ҷамъи харидҳо

осон

Функсияи sum(a, b)-ро нависед, ки ҷамъи ду ададро бармегардонад. Танҳо бо истифода аз он (бе аломати + дар берун аз функсия) арзиши харидро ҳисоб кунед: нон ба 4 сомонӣ, шир ба 12 ва зардолу ба 25.

Таҳрир кардан мумкин аст · Ctrl + Enter
// function sum(a, b) { ... }

// const total = ...
// console.log(...)
Натиҷаи интизоршаванда
Итого: 41 сомони
Ишора 1

Функсия танҳо ду ададро ҷамъ карда метавонад. Аммо натиҷаи он низ адад аст, ва онро ба худи ҳамин функсия додан мумкин аст.

Ишора 2

Даъвати дарунравро кӯшиш кунед: sum(sum(___, ___), ___).

ВАЗИФАИ 4.2

Тахфиф дар Корвон

миёна

Функсияи getDiscountPrice(price, percent)-ро нависед, ки нархро пас аз тахфиф бармегардонад. Дар ду маҳсулот санҷед.

Таҳрир кардан мумкин аст · Ctrl + Enter
// function getDiscountPrice(price, percent) { ... }

console.log("Куртка:", getDiscountPrice(400, 25));
console.log("Кроссовки:", getDiscountPrice(350, 10));
Натиҷаи интизоршаванда
Куртка: 300
Кроссовки: 315
Ишора 1

Аввал андозаи тахфифро бо сомонӣ ёбед: percent фоиз аз price чӣ қадар мешавад.

Ишора 2

Тахфиф = price * percent / 100. Нархи пас аз тахфиф — нархи аввала минус тахфиф. return-ро фаромӯш накунед.

ВАЗИФАИ 4.3

Кай шиноснома гирифтан мумкин аст

душвор

Дар Тоҷикистон шиноснома аз 16-солагӣ медиҳанд. Функсияи checkPassport(age)-ро нависед: агар синну сол 16 ё зиёдтар бошад, он сатри Можно получить паспорт-ро бармегардонад, вагарна — ки чанд сол интизор шудан лозим аст. Баромади барвақтро тавассути return, бе else истифода баред.

Таҳрир кардан мумкин аст · Ctrl + Enter
// function checkPassport(age) { ... }

console.log(checkPassport(18));
console.log(checkPassport(16));
console.log(checkPassport(13));
Натиҷаи интизоршаванда
Можно получить паспорт
Можно получить паспорт
Рано: осталось лет — 3
Ишора 1

Аввал ҳолати «хуб»-ро тавассути if санҷед ва фавран сатрро баргардонед. Агар функсия набаромада бошад — маънои онро дорад, ки синну сол аз 16 камтар аст.

Ишора 2

Чанд сол монд: 16 - age. Сатрро бо қолаби `Рано: осталось лет — ${...}` ҷамъ кунед ва онро баргардонед.

05 Функсияҳои тирдор

Функсияи тирдор (arrow function) — навишти кӯтоҳ-и Function Expression аст. Номи худро аз аломати =>, ки ба тир монанд аст, гирифтааст. Дар коди муосир, дар React ва дар коде, ки ЗС менависад, шумо онро пайваста вомехӯред.

Функсияи оддиро ба тирдор табдил медиҳем — қадам ба қадам

  1. Функсияи аслӣ — Expression
    JavaScript
    const double = function (n) {
      return n * 2;
    };
  2. Калимаи function-ро мебарорем, пас аз қавсайн тир => мегузорем
    JavaScript
    const double = (n) => {
      return n * 2;
    };
  3. Агар дар бадан танҳо return бошад — қавсайни фигурӣ ва худи калимаи return-ро мебарорем. Қимат худкор бармегардад.
    JavaScript
    const double = (n) => n * 2;
  4. Агар параметр маҳз як бошад — қавсайни доираро ҳам бардоштан мумкин аст
    JavaScript
    const double = n => n * 2;

Ҳар чор вариант як корро мекунанд. Санҷед:

Таҳрир кардан мумкин аст · Ctrl + Enter
const double = n => n * 2;

console.log(double(5));   // → 10
console.log(double(21));  // → 42

Қоидаҳои навишт

ҲолатЧӣ тавр менависем
Параметр нестconst hi = () => "Салом!"; — қавсайн ҳатмист
Як параметрconst double = n => n * 2; — қавсайнро партофтан мумкин аст
Якчанд параметрconst sum = (a, b) => a + b; — қавсайн ҳатмист
Як ифодаБе { } — натиҷа худкор бармегардад
Якчанд сатрБо { } — ва он гоҳ return-ро худамон менависем
Таҳрир кардан мумкин аст · Ctrl + Enter
const sayHi = () => "Салом!";
const sum = (a, b) => a + b;
const isEven = n => n % 2 === 0;

// якчанд сатр — қавсайни фигурӣ ва return лозиманд
const getBill = (price, people) => {
  const tip = price * 0.1;
  return (price + tip) / people;
};

console.log(sayHi());          // → Салом!
console.log(sum(7, 8));        // → 15
console.log(isEven(10));       // → true
console.log(getBill(200, 4));  // → 55
Хатои маъмул

Қавсайни фигурӣ гузоштан ва return-ро фаромӯш кардан. Ҳамин ки { } пайдо шуд, бозгашти худкор нест мешавад — функсия undefined бармегардонад.

Хато
Таҳрир кардан мумкин аст · Ctrl + Enter
const triple = n => { n * 3 };
console.log(triple(4)); // → undefined
Дуруст
Таҳрир кардан мумкин аст · Ctrl + Enter
const triple = n => n * 3;
console.log(triple(4)); // → 12

Кай кадом функсияро истифода бурдан

  • Тирдор — барои функсияҳои кӯтоҳ ва махсусан вақте ки функсияро ба функсияи дигар медиҳанд. Дар дарси оянда мебинед, ки онҳо дар методҳои массив чӣ қадар зебо менамоянд: prices.map(p => p * 2).
  • Declaration — барои функсияҳои калон, «асосӣ»-и барнома, ки номи муҳим доранд.
  • Функсияҳои тирдор як хусусияте доранд, ки ба калимаи this вобаста аст. Онро мо дар дарс дар бораи объектҳо ҷудо мекунем, ҳоло танҳо дар хотир нигоҳ доред, ки он вуҷуд дорад.
Ишораи ЗС

ЗС қариб ҳамеша кодро бо функсияҳои тирдор менависад. Агар тири нофаҳмо бинед, хоҳиш кунед: «Ин функсияи тирдорро ба Function Declaration-и оддӣ аз нав навис ва фарқро шарҳ деҳ». Ду вариантро паҳлӯ ба паҳлӯ муқоиса кардан — беҳтарин роҳи фаҳмидани навишт аст.

Амалия: мустаҳкам мекунем

Мақсад — ин аст, ки навишти тирдор ҳамон қадар осон хонда шавад, ки оддӣ.

ВАЗИФАИ 5.1

Бо тирҳо аз нав нависед

осон

Ҳар се функсияро дар шакли тирдор аз нав нависед ва навиштро то ҳадди имкон кӯтоҳ кунед. Даъватҳои поёнро тағйир додан лозим нест — натиҷа бояд ҳамон бимонад.

Буд (танҳо хондан)
function square(n) {
  return n * n;
}
function greet(name) {
  return `Салом, ${name}!`;
}
function getRandomDice() {
  return 4; // бо партоби ҳастухона ҳалол интихоб шуд 🎲
}
Варианти шумо · Ctrl + Enter
// се функсияи тирдори шумо: square, greet, getRandomDice

console.log(square(9));
console.log(greet("Манижа"));
console.log(getRandomDice());
Натиҷаи интизоршаванда
81
Салом, Манижа!
4
Ишора 1

Ҳар функсияро чун const ном = (...) => ...; нависед. Дар ҳар кадом танҳо як return ҳаст — яъне қавсайни фигуриро бардоштан мумкин аст.

Ишора 2

Барои getRandomDice параметр нест — қавсайни доираи холиро гузоштан ҳатмист.

ВАЗИФАИ 5.2

Ивази асъор

миёна

Ду функсияи тирдор нависед, ки ҳар яке дар як сатр аст: toSomoni(usd) доллариро ба сомонӣ табдил медиҳад, toUsd(somoni) — баръакс. Қурбро шартӣ мегирем: 1 доллар = 11 сомонӣ.

Таҳрир кардан мумкин аст · Ctrl + Enter
const RATE = 11;

// const toSomoni = ...
// const toUsd = ...

console.log(toSomoni(100));
console.log(toUsd(550));
console.log(toUsd(toSomoni(25)));
Натиҷаи интизоршаванда
1100
50
25
Ишора 1

Доллар ба сомонӣ — ба қурб зарб мекунем, сомонӣ ба доллар — ба қурб тақсим мекунем.

Ишора 2

Як сатр: const toSomoni = usd => ___ * RATE;. Тағйирёбандаи RATE дар берун эълон шудааст, аммо функсия онро мебинад — чаро, дар бахши оянда мефаҳмем.

ВАЗИФАИ 5.3

Чӣ қадар роҳ меравем

душвор

Функсияи тирдори travelTime(distance, speed)-ро нависед, ки вақти роҳро бо соат бармегардонад. Суръати пешфарз — 60 км/соат. Сипас функсияи тирдори дуюми tripInfo(city, distance, speed)-ро нависед, ки аввалиро истифода мебарад ва сатри тайёрро бармегардонад.

Таҳрир кардан мумкин аст · Ctrl + Enter
// const travelTime = ...
// const tripInfo = ...

console.log(travelTime(120));
console.log(tripInfo("Хорог", 525));
console.log(tripInfo("Худжанд", 340, 85));
Натиҷаи интизоршаванда
2
Душанбе → Хорог: 525 км, примерно 8.75 ч
Душанбе → Худжанд: 340 км, примерно 4 ч
Ишора 1

Вақт = масофа / суръат. Қимати пешфарз барои функсияҳои тирдор ҳамин тавр дода мешавад: (distance, speed = 60) => ...

Ишора 2

Дар дохили сатри қолабии tripInfo travelTime(distance, speed)-ро даъват кунед. Агар speed дода нашавад, ба он ҷо undefined меравад — ва дар travelTime қимати пешфарз кор мекунад.

06 Доираи намоёнӣ

Доираи намоёнӣ (scope) ба ин савол ҷавоб медиҳад: тағйирёбанда дар кадом ҷои код «намоён» аст ва онро истифода бурдан мумкин аст. Аз ин вобаста аст, ки чаро баъзан код хатои is not defined медиҳад, ҳарчанд тағйирёбанда «ана, навишта шудааст».

Монандӣ аз ҳаёт

Хонаи бисёрошёнаро тасаввур кунед. Ҳавлӣ — умумӣ: майдончаи бачагонаро ҳамаи сокинон мебинанд. Хонавор — шахсӣ: дар хонавор будан, шумо ҳам чизҳои худро мебинед, ҳам (аз тиреза) ҳавлиро. Аммо ҳамсояҳо аз ҳавлӣ намебинанд, ки дар сари мизи шумо чӣ ҳаст. Дар код ҳам ҳамин тавр: аз дарун ба берун намоён аст, аммо аз берун ба дарун — не.

Доираи глобалӣ — «ҳавлӣ» const city = "Душанбе";
Доираи функсия — «хонавор» const student = "Мадина"; // city-ро мебинад
Блоки { } — «ҳуҷра» const grade = 5; // student ва city-ро мебинад
Ҳар доираи дарунӣ ҳамаро, ки дар берун аст, мебинад. Доираи берунӣ — он чиро, ки дар дарун аст, намебинад.

1. Доираи глобалӣ

Тағйирёбандаҳое, ки берун аз ҳамаи функсияҳо ва блокҳо эълон шудаанд. Дар ҳама ҷо дар барнома намоёнанд.

Таҳрир кардан мумкин аст · Ctrl + Enter
const academy = "MakeFirstStep";

function showAcademy() {
  console.log(`Учимся в ${academy}`); // функсия тағйирёбандаи глобалиро мебинад
}

showAcademy();         // → Учимся в MakeFirstStep
console.log(academy);  // → MakeFirstStep

2. Доираи функсия (маҳаллӣ)

Тағйирёбандаҳое, ки дар дохили функсия эълон шудаанд, танҳо дар дохили он вуҷуд доранд. Параметрҳои функсия низ тағйирёбандаҳои маҳаллӣ мебошанд. Аз берун онҳо намоён нестанд.

Ин код хато медиҳад · Ctrl + Enter
function makeOrder() {
  const dish = "оши палав";
  console.log(`Заказ: ${dish}`);
}

makeOrder();       // → Заказ: оши палав
console.log(dish); // ✖ ReferenceError: dish is not defined

Ин хато нест, балки хусусияти хеле фоиданок аст. Ҳар функсия мисли хонаваре ҷудогона аст: дар дохил тағйирёбандаҳоро бо оромӣ ном гузоштан мумкин аст, бидуни тарс аз он ки онҳо бо тағйирёбандаҳои функсияи дигар «омехта мешаванд».

Таҳрир кардан мумкин аст · Ctrl + Enter
function morning() {
  const message = "Субх ба хайр!";
  console.log(message);
}

function evening() {
  const message = "Шаб ба хайр!"; // ҳамон ном — ҳеҷ ихтилоф нест
  console.log(message);
}

morning(); // → Субх ба хайр!
evening(); // → Шаб ба хайр!

3. Доираи блокӣ

Ҳар қавсайни фигурии { } — дар if, for, while — низ доираи худро месозад. Тағйирёбандаҳои let ва const, ки дар блок эълон шудаанд, танҳо дар дохили ҳамин блок намоёнанд.

Таҳрир кардан мумкин аст · Ctrl + Enter
const score = 92;

if (score >= 86) {
  const grade = 5;
  console.log("Оценка внутри блока:", grade); // → Оценка внутри блока: 5
}

console.log(typeof grade); // → undefined — берун аз блок grade вуҷуд надорад

Пӯшонидан: номҳои якхела

Агар дар дохили функсия тағйирёбандаро бо ҳамон номе эълон кунед, ки дар берун ҳаст, тағйирёбандаи дарунӣ беруниро мепӯшонад («сояафкан мешавад»). Тағйирёбандаи берунӣ дар ин вақт тағйир намеёбад.

Таҳрир кардан мумкин аст · Ctrl + Enter
const weather = "солнечно";

function showMountainWeather() {
  const weather = "снег"; // тағйирёбандаи худӣ, маҳаллӣ
  console.log("В Варзобе:", weather);
}

showMountainWeather();             // → В Варзобе: снег
console.log("В Душанбе:", weather); // → В Душанбе: солнечно

JavaScript тағйирёбандаро аз дарун ба берун меҷӯяд: аввал дар доираи ҷорӣ, баъд дар доираи берунӣ, ва ҳамин тавр то глобалӣ. Аввалинеро, ки ёфт, мегирад. Агар дар ҳеҷ ҷо наёфт — хатои is not defined.

Чӣ тавр қиматро аз функсия ба берун баровардан

Роҳи дуруст — return. Функсия қиматро бармегардонад, ва мо онро дар берун ба тағйирёбанда нигоҳ медорем.

Таҳрир кардан мумкин аст · Ctrl + Enter
function getDish() {
  const dish = "оши палав";
  return dish;
}

const myDish = getDish();
console.log(myDish); // → оши палав
Муҳим: пас var чӣ мешавад?

Дар коди кӯҳна (ва баъзан дар ҷавобҳои ЗС) var вомехӯрад. Он ба доираи блокӣ итоат намекунад — аз қавсайни фигурии if ва for «мегузарад». Аз ин сабаб хатогиҳои душворёфт ба вуҷуд меоянд. Дар коди муосир танҳо const (аз рӯи пешфарз) ва let (агар қимат тағйир ёбад) менависем.

Таҳрир кардан мумкин аст · Ctrl + Enter
if (true) {
  var oldStyle = "я протёк наружу";
  let newStyle = "я остался внутри";
}

console.log(oldStyle);        // → я протёк наружу
console.log(typeof newStyle); // → undefined
Маслиҳат

Тағйирёбандаро дар хурдтарин доирае эълон кунед, ки ба он лозим аст. Тағйирёбандаҳои глобалиро ҳар функсияи барнома тасодуфан тағйир дода метавонад — ва баъд ёфтани он ки ин корро кӣ кард, хеле душвор аст. Тағйирёбандаҳои глобалӣ чӣ қадар кам бошанд, зиндагӣ ҳамон қадар ором аст.

Амалия: мустаҳкам мекунем

Дар ин ҷо на танҳо навиштани код, балки пешбинӣ кардани рафтори он низ муҳим аст.

ВАЗИФАИ 6.1

Кӣ чиро мебинад

осон

Бе иҷрои код, дар дафтар нависед, ки ҳар кадом аз се сатри console.log чиро мебарорад. Сипас иҷро кунед ва бо натиҷа муқоиса намоед. Барои ҳар сатр шарҳ диҳед, ки JavaScript кадом тағйирёбандаи name-ро ёфт ва чаро.

Таҳрир кардан мумкин аст · Ctrl + Enter
const name = "MakeFirstStep";

function first() {
  const name = "Фарход";
  console.log("1:", name);
}

function second() {
  console.log("2:", name);
}

first();
second();
console.log("3:", name);
Натиҷаи интизоршаванда
Сначала ваш прогноз — потом кнопка «Запустить»
Ишора 1

Қоидаи ҷустуҷӯро ба ёд оред: JavaScript тағйирёбандаро аввал дар доираи ҷорӣ меҷӯяд, баъд ба берун мебарояд.

Ишора 2

Функсияи first name-и худӣ дорад. Ва second худӣ надорад — ба куҷо «нигоҳ кардан» лозим меояд?

ВАЗИФАИ 6.2

Кодро таъмир кунед

миёна

Коди зер бо хато меафтад. Сабабро ёбед ва онро ислоҳ кунед, то ҷамъи ниҳоӣ дар дохили функсия ҳисоб шавад, ва дар берун бароварда шавад. Дар дохили функсия тағйирёбандаҳои глобалӣ эҷод кардан мумкин нест — return-ро истифода баред.

Таҳрир кардан мумкин аст · Ctrl + Enter
function calcCart(price, count) {
  const total = price * count;
}

calcCart(15, 4);
console.log(`Сумма корзины: ${total} сомони`);
Натиҷаи интизоршаванда
Сумма корзины: 60 сомони
Ишора 1

Матни хаторо дар консол хонед. total дар дохили функсия эълон шудааст — дар кадом доира намоён аст?

Ишора 2

Функсия бояд total-ро баргардонад, ва дар берун натиҷаи даъватро ба тағйирёбанда нигоҳ доштан лозим аст: const total = calcCart(...).

ВАЗИФАИ 6.3

Ҳисобкунаки меҳмонон

душвор

Дар даромадгоҳи китобхона ҳисобкунак гузошта шудааст. Функсияи addVisitor(name)-ро нависед, ки ҳангоми ҳар даъват шумораи умумии меҳмононро ба 1 зиёд мекунад ва сатрро чун дар мисол мебарорад. Онро барои се меҳмон даъват кунед. Сипас хаттӣ ҷавоб диҳед: чаро тағйирёбандаи ҳисобкунакро дар дохили функсия эълон кардан мумкин нест? Ҷавоби худро санҷед — онро ба дохил гузаронед ва иҷро кунед.

Таҳрир кардан мумкин аст · Ctrl + Enter
// ҳисобкунакро дар куҷо эълон кунем?

// function addVisitor(name) { ... }

addVisitor("Сабрина");
addVisitor("Далер");
addVisitor("Манижа");
Натиҷаи интизоршаванда
Добро пожаловать, Сабрина! Посетителей сегодня: 1
Добро пожаловать, Далер! Посетителей сегодня: 2
Добро пожаловать, Манижа! Посетителей сегодня: 3
Ишора 1

Ҳисобкунак бояд байни даъватҳои функсия «зинда» монад. Тағйирёбандаҳои дохили функсия ҳар дафъаи даъват аз нав эҷод мешаванд — ва ҳар дафъа аз сифр оғоз мегарданд.

Ишора 2

let visitors = 0;-ро дар берун аз функсия эълон кунед, ва дар дохил зиёд кунед: visitors++.

07 Амалияи ниҳоӣ

Акнун ҳамаро якҷоя ҷамъ мекунем. Дар ин вазифаҳо ҳамаи мавзӯъҳои дарс муфид мешаванд: эълони функсияҳо, параметрҳои пешфарз, return, функсияҳои тирдор ва доираи намоёнӣ. Бо тартиб ҳал кунед — ҳар кадоми баъдӣ каме мушкилтар аст.

Вазифаи калонро чӣ тавр ҳал кардан

1) Шартро ду бор хонед. 2) Нависед, ки функсия чиро мегирад (параметрҳо) ва чиро бармегардонад. 3) Дар мисоли мушаххас дар зеҳн ё дар коғаз ҳал кунед. 4) Танҳо баъд код нависед — ва онро пас аз ҳар қадам бо тугмаи «Иҷро» санҷед.

Амалия: ҳамаро якҷоя ҷамъ мекунем

Се вазифа — се барномаи хурд.

ВАЗИФАИ 7.1

Ҳисоб дар чойхона

миёна

Гурӯҳи дӯстон дар чойхона шом хӯрданд. Функсияи splitBill(total, people, tipPercent)-ро нависед, ки бармегардонад, ҳар кас бо назардошти чойпулӣ чӣ қадар бояд пардозад. Чойпулии пешфарз — 10%. Натиҷаро бо Math.round() то адади бутун мудаввар кунед.

Таҳрир кардан мумкин аст · Ctrl + Enter
// function splitBill(...) { ... }

console.log(splitBill(360, 4));
console.log(splitBill(250, 3, 15));
console.log(splitBill(500, 5, 0));
Натиҷаи интизоршаванда
99
96
100
Ишора 1

Тартиби амалҳо: чойпулиро ҳисоб кардан → ба маблағ илова намудан → ба шумораи одамон тақсим кардан → мудаввар кардан.

Ишора 2

Маблағ бо чойпулӣ: total + total * tipPercent / 100. Ба даъвати сеюм диққат диҳед: 0 — қимати ҳақиқӣ аст, қимати пешфарз дар ин ҷо кор намекунад (ва набояд кунад).

ВАЗИФАИ 7.2

Обуҳаво дар Душанбе

миёна

Ду функсия нависед. Функсияи тирдори toFahrenheit(c) дараҷаҳои Селсияро аз рӯи формулаи c × 9 / 5 + 32 ба Фаренгейт табдил медиҳад. Функсияи describeWeather(c) аввалиро истифода мебарад ва сатрро бармегардонад: аз 30 °C ва боло — жарко, аз 15 — тепло, пасттар — прохладно. return-и барвақтро истифода баред.

Таҳрир кардан мумкин аст · Ctrl + Enter
// const toFahrenheit = ...
// function describeWeather(c) { ... }

console.log(describeWeather(38));
console.log(describeWeather(22));
console.log(describeWeather(5));
Натиҷаи интизоршаванда
38°C (100.4°F) — жарко
22°C (71.6°F) — тепло
5°C (41°F) — прохладно
Ишора 1

Аввал Фаренгейтро ба тағйирёбанда дар дохили describeWeather ҳисоб кунед, то функсияро якчанд бор даъват накунед.

Ишора 2

Санҷишҳо аз ҳарорати баландтар ба пасттар мераванд: if (c >= 30) return ...; баъд if (c >= 15) return ...;, ва return-и охирин — барои ҳамаи ҳолатҳои боқимонда.

ВАЗИФАИ 7.3

Варақаи имтиҳон

душвор

Муаллим балҳоро (аз 0 то 100) ба баҳо табдил медиҳад: 86 ва боло — 5, аз 71 — 4, аз 56 — 3, пасттар — 2. Нависед:

  • getGrade(score) — баҳоро ҳамчун адад бармегардонад;
  • isPassed(score) — тирдор, агар баҳо 3 ва боло бошад, true бармегардонад (дар дохил getGrade-ро истифода баред);
  • report(name, score) — сатрро барои варақа бармегардонад, ҳарду функсияро истифода бурда.
Таҳрир кардан мумкин аст · Ctrl + Enter
// function getGrade(score) { ... }
// const isPassed = ...
// function report(name, score) { ... }

console.log(report("Рустам", 87));
console.log(report("Зарина", 72));
console.log(report("Шахром", 56));
console.log(report("Далер", 50));
Натиҷаи интизоршаванда
Рустам: 87 баллов, оценка 5 — сдал
Зарина: 72 баллов, оценка 4 — сдал
Шахром: 56 баллов, оценка 3 — сдал
Далер: 50 баллов, оценка 2 — пересдача
Ишора 1

Аз getGrade оғоз кунед ва онро алоҳида санҷед: console.log(getGrade(90)). Танҳо вақте ки кор мекунад — ба функсияи навбатӣ гузаред. Барномаҳоро ҳамин тавр аз хиштҳои хурди боэътимод месозанд.

Ишора 2

isPassed дар як сатр: score => getGrade(score) >= 3. Дар report калимаи «супорид» ё «бозтопшӣ»-ро бо оператори сегона интихоб кардан қулай аст: isPassed(score) ? "сдал" : "пересдача".

✓ Хулосаи дарс

  • Функсия — пораи кодест бо ном. Як бор эълон кардем — ҳар қадар хоҳем даъват мекунем: greet().
  • Declaration: function greet() {} — пеш аз эълон низ даъват кардан мумкин аст (hoisting).
  • Expression: const greet = function () {}; — функсия ҳамчун қимат дар тағйирёбанда, танҳо пас аз эълон дастрас аст.
  • Тирдор: const double = n => n * 2; — бе { } натиҷа худкор бармегардад; бо { } return лозим аст.
  • Параметрҳо — номҳо ҳангоми эълон, аргументҳо — қиматҳо ҳангоми даъват. Бо тартиб дода мешаванд. Дода нашаванд — undefined.
  • Пешфарз: function f(x = 10) — танҳо барои undefined кор мекунад.
  • return натиҷаро медиҳад ва функсияро фавран анҷом медиҳад. Бе он функсия undefined бармегардонад. Ҳисоб мекунем — бармегардонем, на мебарорем.
  • Доираи намоёнӣ: аз дарун ба берун намоён аст, аз берун ба дарун — не. let/const дар { }-и худ зиндагӣ мекунанд. var-ро истифода намебарем.