JavaScript належить до динамічних мов, які підтримують обʼєктно-орієнтований, імперативний і декларативний (як-от функціональне програмування) стилі.
У JavaScript є кілька основних способів присвоїти значення іменам: за допомогою змінних або констант. На Exercism змінні завжди пишуть у camelCase, а константи - у SCREAMING_SNAKE_CASE. Немає офіційного посібника, якого варто дотримуватися, і в різних компаній та організацій бувають різні посібники зі стилю. Можна писати змінні як завгодно. Перевага писати їх так, як підготовлено у вправах, у тому, що у вебінтерфейсі та більшості IDE вони будуть підсвічуватися по-різному.
Змінні в JavaScript можна визначати за допомогою ключового слова const, let або var.
Змінна може посилатися на різні значення протягом свого життя, якщо використовувати let або var.
Наприклад, myFirstVariable можна визначати й перевизначати багато разів за допомогою оператора присвоєння =:
let myFirstVariable = 1;
myFirstVariable = 'Some string';
myFirstVariable = new SomeComplexClass();
На відміну від let і var, змінні, визначені через const, можна присвоїти лише один раз.
Так у JavaScript визначають константи.
const MY_FIRST_CONSTANT = 10;
// Can not be re-assigned.
MY_FIRST_CONSTANT = 20;
// => TypeError: Assignment to constant variable.
💡 У наступній концептуальній вправі ми розглянемо й пояснимо різницю між присвоєнням константі, звʼязуванням константи та значенням константи.
У JavaScript одиниці функціональності інкапсульовані у функціях; зазвичай функції, які належать одна одній, групують в одному файлі.
Ці функції мають параметри (тобто можуть приймати аргументи) і можуть повертати значення за допомогою ключового слова return.
Функції викликають за допомогою синтаксису ().
function add(num1, num2) {
return num1 + num2;
}
add(1, 3);
// => 4
У цьому прикладі функція має назву add.
Вона має два параметри: num1 і num2.
Вона повертає значення: результат виразу num1 + num2
Потім функцію add викликають з двома аргументами: 1 і 3.
Результат роботи функції, повернене значення, - 4.
💡 У JavaScript є багато різних способів оголосити функцію.
Деякі з цих інших способів мають інший вигляд, ніж використання ключового слова function.
Трек намагається поступово їх подавати, але якщо ці способи вже знайомі, можна використовувати будь-який із них.
У більшості випадків жоден із них не кращий і не гірший.
Щоб зробити function, константу або змінну доступними в інших файлах, їх потрібно експортувати за допомогою ключового слова export.
Інший файл може потім імпортувати їх за допомогою ключового слова import.
Це також відомо як модульна система.
Чудовий приклад - це те, як працюють усі тести.
Кожна вправа має щонайменше один файл, наприклад lasagna.js, який містить реалізацію.
Реалізацію експортують із файлу за допомогою export, тож її можна імпортувати в іншому файлі.
Крім того, є щонайменше один інший файл, наприклад lasagna.spec.js, який містить тести.
Цей файл імпортує публічні (тобто експортовані) сутності, щоб протестувати реалізацію:
// file.js
export const MY_VALUE = 10;
export function add(num1, num2) {
return num1 + num2;
}
// file.spec.js
import { MY_VALUE, add } from './file';
add(MY_VALUE, 5);
// => 15
Дівчина Люсіана вже прямує додому, а він ще не приготував вечерю на їхню річницю!
У цій вправі ми напишемо трохи code, щоб допомогти Люсіану приготувати вишукану лазанью з його улюбленої кулінарної книги.
У нас є чотири завдання, повʼязані з часом, витраченим на приготування лазаньї.
Визначте константу EXPECTED_MINUTES_IN_OVEN, яка представляє, скільки хвилин лазанья повинна перебувати в духовці. Її потрібно експортувати. Згідно з кулінарною книгою, очікуваний час у духовці в хвилинах становить 40.
Реалізуйте функцію remainingMinutesInOven, яка приймає фактичну кількість хвилин, які лазанья вже перебувала в духовці, як параметр і повертає, скільки хвилин лазаньї ще залишилося перебувати в духовці, на основі очікуваного часу в духовці в хвилинах із попереднього завдання.
remainingMinutesInOven(30);
// => 10
Реалізуйте функцію preparationTimeInMinutes, яка приймає кількість шарів, які ми додали до лазаньї, як параметр і повертає, скільки хвилин ми витратили на підготовку лазаньї, якщо припустити, що на кожен шар ми витрачаємо 2 хвилини.
preparationTimeInMinutes(2);
// => 4
Реалізуйте функцію totalTimeInMinutes, яка приймає два параметри: параметр numberOfLayers позначає кількість шарів, які ми додали до лазаньї, а параметр actualMinutesInOven позначає кількість хвилин, які лазанья перебувала в духовці. Функція повинна повернути, скільки хвилин загалом ми працювали над приготуванням лазаньї, що є сумою часу підготовки в хвилинах і часу в хвилинах, який лазанья провела в духовці на даний момент.
totalTimeInMinutes(3, 20);
// => 26
Зареєструйтеся на Exercism, щоб вивчати й опановувати JavaScript, а також 37 концепцій159 вправ та справжнє наставництво від людей, і все це безкоштовно.