Используйте функции стрелок для записи сжатых анонимных функций
В JavaScript нам часто не нужно называть наши функции, особенно при передаче функции в качестве аргумента другой функции. Вместо этого мы создаем анонимные функции "на лету". Нам не нужно называть эти функции, потому что мы не используем их повторно нигде. Для этого мы часто используем следующий синтаксис:
const myFunc = function () {
const myVar = "value";
return myVar;
}
ES6 предоставляет нам синтаксический сахар, чтобы не писать анонимные функции таким образом. Вместо этого вы можете использовать синтаксис стрелочных функций : const myFunc = () => {
const myVar = "value";
return myVar;
}
Когда нет тела функции, а есть только возвращаемое значение, синтаксис функции стрелки позволяет опустить ключевое слово return
, а также скобки, окружающие код. Это помогает уместить такие функции в однострочные операторы:
const myFunc = () => "value"
Этот код по-прежнему будет возвращать value
.
Примечание: с таким сокращенным синтаксисом важно понимать, что вы не можете вернуть в качестве результата новый объект, описанный в фигурные скобки. То есть JS не понимает, что вы хотите вернуть новый объект. Он видит фигурные скобки и воспринимает их как тело функции. Пример такого неправильного синтаксиса:
myFunc = () => {name: "Stef", age: 22}
// Uncaught SyntaxError: Unexpected token ':'
Здесь фигурные скобки будут восприниматься не как границы анонимного объекта, а именно как границы тела функции. Получается, что внутри функции будет вызываться name: "Stef", age: 22
, а это неправильный синтаксис.
Но это легко лечится, если обернуть объект в круглые скобки.
myFunc = () => ({name: "Stef", age: 22})
Примечание: Как передавать параметры в стрелочные функции, сомтрите в следующем уроке.
Примечание 2: про удобство использования стрелочных функций в классах смотрите в уроке Привязать this к методу класса.
Используя синтаксис стрелочных функций, перепишите функцию, чтобы она возвращала Date()
и присвойте эту функцию переменной magic
. Также убедитесь, что ничего не определено с помощью ключевого слова var
.