logicface
@logicface
Начинающий

Как написать аналог стрелочной функции в замыканиях?

Изучаю JS по книге выразительный JS и столкнулся с непониманием в уроке про замыкания. Автор приводит такой пример:

function multiplier(x) {
    return number => number * x;
}
let twice = multiplier(2);
console.log(twice(10));

Суть работы мне полностью понятна. Мне непонятно вот это: number => number * 2;. Что это за странное объявление функции? Сами стрелочные функции я понимаю. Но такого объявления в книге до этого момента не встречалось. Я, пытаясь разобраться, переписал код в таком формате:

function multiplier(x) {
    return function(number) {
        number * x;
    }
}
let twice = multiplier(2);
console.log(twice(10));

Но в таком виде ничего не работает. Почему? Или замыкание может работать только через стрелочные функции только в таком формате?
  • Вопрос задан
  • 103 просмотра
Решения вопроса 2
otdameskapizm
@otdameskapizm
Помог ответ? Отметь решением...
Твоя функция работает. Ты просто забыл добавить return number * 2
В твоей стрелочной функции он тоже есть number => number * 2; просто он задан неявно. У тебя не используется нигде x - возможно, стоит рассмотреть куда его можно здесь применить
Ответ написан
VoidVolker
@VoidVolker Куратор тега JavaScript
Dark side eye. А у нас печеньки! А у вас?
Вероятно правильнее так:
function multiplier(x) {
    return number => number * x
}
let twice = multiplier(2)
console.log(twice(10))

function multiplier(x) {
    return function(number) {
        return number * x
    }
}
let twice = multiplier(2)
console.log(twice(10))


Что это за странное объявление функции?

Обычная стрелочная функция.
number => number * x
(number) => number * x
number => { return number * x }
(number) => { return number * x }
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы