JavaScript: Упрощенный синтаксис функций
По сравнению с некоторыми (в первую очередь функциональными) языками, определение функции в JavaScript выглядит довольно громоздко:
const square = (x) => {
return x ** 2;
};Здесь используется много дополнительных символов и слово return. С версии es6, в языке появился альтернативный, сокращенный синтаксис, который, в некоторых ситуациях, значительно упрощает восприятие и сокращает количество кода.
// Требуется немного времени на привыкание к этой форме
// но потом вы не сможете без неё жить
const double = (x) => x ** 2;Отличия от полного определения два: пропали фигурные скобки и инструкция return. Сокращенная запись функции делает возврат автоматически. Подразумевается, что внутри такой функции ровно одно выражение, которое вычисляется, и её результат сразу возвращается наружу.
Подчеркнём, что отличия исключительно синтаксические, с точки зрения использования различий нет. Пример с двумя аргументами:
Полная версия
const sum = (a, b) => {
return a + b;
};Сокращенная версия
const sum = (a, b) => a + b;Обратите внимание на отсутствие фигурных скобок. Разработчики, которые не привыкли использовать такой синтаксис, иногда пишут подобный код const sum = (a, b) => { a + b };, а потом долго не могут понять, почему он не работает. Ответ очень простой: если стоят фигурные скобки, то это не сокращенная форма, а значит, чтобы функция вернула значение, придётся поставить return.
Задание
Реализуйте функцию capitalize(), которая принимает непустую строку и приводит первую букву первого слова к верхнему регистру:
const name = 'arya';
console.log(capitalize(name)); // => AryaЧтобы получить подстроку (или символ) из строки, используйте метод slice():
'welcome'.slice(2, 5); // lcoДля приведения строки к верхнему регистру используйте метод toUpperCase()
'welcome'.toUpperCase(); // WELCOMEПолезное
Ваше упражнение проверяется по этим тестам
// @ts-check
import { expect, test } from 'vitest';
import f from './index.js';
test('define functions short syntax', () => {
const expected1 = 'Daenerys';
const actual1 = f('daenerys');
expect(f(actual1)).toEqual(expected1);
expect(f('hexlet')).toEqual('Hexlet');
});Решение учителя откроется через:
20:00
