Агар функсияи logHello ҳамчун стрелка навишта шуда бошад ва дар дохили runOnce тавассути fn.call(this, ...args) даъват карда шавад, чӣ мешавад бо контексти this? Барои интиқоли дурустии контекст дар функсияи logHello чӣ бояд иваз карда шавад?
Frontend
Функсияи табдили сатр аз camelCase ба snake_case нависед. Истифодаи ибораҳои муқарраршуда, коди рамзҳо ё рӯйхати рамзҳои сахт таъиннашуда манъ аст; ҳалли бояд умумиҷаҳонӣ бошад. Мушаххасоти вақт ва фазоиро арзёбӣ кунед.
Чаро дар ду даъвати sleep(2000) ва sleep(1000) аввал лог дар бораи 1 сония намоиш дода мешавад ва сипас дар бораи 2? Тавзеҳ диҳед, ки чӣ гуна кор мекунад Event Loop, микро- ва макро-таски.
/* Моёд набор билетов у следующем формате: [ { from: 'Лондон', to: 'Москва' }, { from: 'NY', to: 'Лондон' }, { from: 'Москва', to: 'Санкт-Петербург' }, ... ] Из этих билетов можно построить единственный, непрерывный маршрут. В маршруте нет циклов или повторений. Нужно написать программу, которая возвращает эти же объекты билетов в порядке следования по маршруту. */ function getRoute(tickets = [], startCity) { // ваш код здесь } console.clear() console.log(getRoute([ { from: 'Лондон', to: 'Москва' }, { from: 'NY', to: 'Лондон' }, { from: 'Москва', to: 'Санкт-Петербург' }, ], 'NY')); /* [ { from: 'NY', to: 'Лондон' }, { from: 'Лондон', to: 'Москва' }, { from: 'Москва', to: 'Санкт-Петербург' }, ] */
Донистани дар бораи базаи додаҳо ва кор бо API
/** * `asyncAuth(callback)` функциясы callback-ты кабыл алат, анда * ката (биринчи аргумент катары) жана артка кайтарылган маалыматтар * (экинчи аргумент катары) өткөрүлүшү мүмкүн. * asyncAuth((error, data) => {}); * * Сиз `auth()` функциясын иштеп чыгышыңыз керек, * ал `asyncAuth()`'ду чакырат, бирок Promise кайтарат. * * @returns {Promise} */ function auth() { // asyncAuth((error, data) => {}); } /** * `tryAuth()` функциясы `auth()`'ду колдонуп, ката болсо, * N кошумча аракет кылат. * Бардык аракеттер ийгиликсиз болсо, акыркы катаны кайтарат. * * @returns {Promise} */ function tryAuth(n) { }
Дар таҷрибаи тиҷоратӣ шумо ба чӣ дигар навиштед, ғайр аз TypeScript ва JavaScript?
/** * 'asyncAuth(callback)' функциясы callback кабыл алат, анын ичинде * ката (биринчи аргумент) жана маалыматтар * бекендден (экинчи аргумент) өткөрүлүшү мүмкүн. * asyncAuth((error, data) => {}); * * Сиз 'auth()' функциясын ишке ашырышыңыз керек, * ал 'asyncAuth()' чакырып, бирок Promise кайтарат. * * @returns {Promise} */ function auth() { return new Promise((resolve, reject) => { asyncAuth((error, data) => { if (error) { reject(error) } else { resolve(data) } }); }) } /** * 'tryAuth()' функциясы 'auth()' колдонуп, ката болсо, * N кошумча аракет кылат. * Бардык аракеттер ийгиликсиз болсо, акыркы катаны кайтарат. * * @returns {Promise} */ function tryAuth(n) { return new Promise((resolve, reject) => { function attempt(attemptsLeft) { auth().then(resolve).catch((error) => { if (attemptsLeft <= 0) { reject(error); } else { attempt(attemptsLeft - 1); } }); } attempt(n); }); }
Агар мо бояд рақамҳои тақсимшавандаро ба назар гирем, ба метод times чӣ бояд илова кунем?
/* Треба написати polyfill за Array.prototype.some Параметри - callback - функція, яка перевіряє кожен елемент, приймає три аргументи: - element - Поточний оброблюваний елемент у масиві. - index (Опціонально) - Індекс поточного оброблюваного елемента. - array (Опціонально) - Масив, по якому виконується ітерація. - thisArg (Опціонально) - Значення, яке використовується як this під час виконання функції callback. Повертає true, якщо функція перевірки повертає truthy значення для принаймні одного елемента масиву. Інакше false. */ Array.prototype.some = function (callback, thisArgs) { const array = this; for (let i = 0; i < array.length; i++) { if (!(i in array)) continue; const result = callback.call(thisArgs, array[i], i, array); if (result) return true; } return false; }
Шумо дар кадом гурӯҳ кор мекунед ва дар кадом лоиҳа?
Оё имкон дорад вазифаи ҷамъоварии ваъдаҳоро бе истифодаи усулҳои статикии Promise ҳал кард? Чӣ фарқият дорад иҷрои ваъдаҳо дар дохили як давр аз Promise.all — дар параллел ё дар пайравӣ?
Дарёе аст, ки дар он мушк ва харгӯшҳо нишастаанд. Функсияи ёфтани ҳамаи мушкҳоро дар дарахт нависед ва номҳои онҳоро баргардонед. Натоиҷи интизорӣ: ['Acorn', 'Sirsalty', 'Macadamia', 'Kernel'].
Декоратори callLimit(fn, limit, callback) иҷро кунед, ки шумораи даъватҳоро ба функсия маҳдуд мекунад. Мегирад: функсия барои декоратсия, миқдори максимумии даъватҳо, callback, ки дар даъвати охирин (ихтиёрӣ) даъват мешавад. Функсияи баргардондашуда бояд методи reset дошта бошад, ки ҳисобкунакро ба ҳолати ибтидоӣ баргардонад.
Тартиби баромади ба консол ва арзишҳои вақти андозашударо дар намунаи бо sleep, таймерҳо, Promise ва навбатҳои вазифа муайян кунед; шарҳ диҳед, ки чаро деркунӣ воқеӣ метавонад аз он ки муқаррар шудааст, бештар бошад.
Кадом истифодаи беҳтар аст барои нигоҳ доштани маълумотҳо дар асоси калид: Map ё объект оддӣ? Афзалиятҳои Map чист?
/** * Қажет болған жағдайда, асинхронды функция жазу керек, * ол берілген миллисекундтар бойы "ұйықтайды", * және содан кейін сәтті аяқталады */ function sleep(duration) { } // Мысал const startTime = Date.now(); console.log("Ұйқыға кету..."); sleep(2000).then(() => { console.log("2 секундтан кейін оянды!"); console.log("Өткен уақыт: ", Date.now() - startTime); }); sleep(1000).then(() => { console.log("1 секундтан кейін оянды!"); console.log("Өткен уақыт: ", Date.now() - startTime); });
/** * Ижро этиш учун runOnce номли ўрам функциясини амалга оширинг, бу * функция қабул қилади ва янги функция қайтарadi. Янги * функция фақат бир марта чақирилиши мумкин, барча кейинги * чақирувлар undefined қайтарadi. * * Ўралган функция аргументлар қабул қилиши * ва натижани қайтариши мумкин. */ function runOnce(fn) { // сизинг кодингиз } const logHello = (name) => { console.log(`салом, ${name}!`) }; const logHelloOnce = runOnce(logHello); console.clear(); logHelloOnce('Oleg'); // 'салом, Oleg!' logHelloOnce('Olga'); // undefined
Тартиб диҳед, ки Array.prototype-ро бо усулие, ки унсурҳои массивро бар асоси калиде, ки аз ҷониби функсияе дода шудааст, гурӯҳбандӣ мекунад ва объектие бармегардонад, ки дар он ҳар як калид ба массиви унсурҳо мувофиқат мекунад. Тавзеҳ диҳед, ки агар функсияи ҳисоб кардани калид чизе, ки на string ва на рақам аст, баргардонад, чӣ мешавад.
// Sizga lotin harflari, bo'sh joylar va tinish belgilaridan iborat satr berilgan. // Satr har bir 26 harfni kamida bir marta o'z ichiga olgan bo'lsa, pangram deb ataladi. Satr pangram yoki yo'qligini aniqlang. const LETTERS = ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J']; function isPangram(text) { // kodingizni bu yerga yozing } console.log(isPangram(`A pangram or holoalphabetic sentence is a using every letter of a given alphabet at least once.`)); // => console.log(isPangram('Waltz, bad nymph, for quick jigs vex.'))