Визуально стрелочные функции напоминают лямбда-выражения в Java, по крайней мере для меня как разработчика Java они выглядят очень похожими.
Синтаксис стрелочных функций выглядит примерно так:
1 |
let func = (параметр1, параметр2, ... параметрN) => выражение; |
Пример:
1 2 |
let writeGreeting = (name) => console.log("Hello, " + name); writeGreeting("Alice"); |
Код выше аналогичен коду:
1 2 |
let writeGreeting = function(name) { console.log("Hello, " + name); } writeGreeting("Alice"); |
Пример без параметров:
1 2 |
let helloWorldFunc = () => console.log("Hello, World!"); helloWorldFunc(); |
Он же без стрелочных функций:
1 2 3 4 |
let helloWorldFunc = function() { console.log("Hello, World!"); } helloWorldFunc(); |
Пример с несколькими параметрами:
1 2 |
let sum = (v1, v2) => v1 + v2; sum(2, 3); |
Аналогичный ему код без стрелочных функций:
1 2 3 4 |
let sum = function(v1, v2) { return v1 + v2; } sum(2, 3); |
Многострочный:
1 2 3 4 5 6 |
let sumMultiline = (v1, v2) => { console.log("multiline"); return v1 + v2; } sumMultiline(2, 3); |
Тот же код, но без стрелочных функций:
1 2 3 4 5 6 |
let sumMultiline = function(v1, v2) { console.log("multiline"); return v1 + v2; } sumMultiline(2, 3); |
> Код выше аналогичен коду
А вот нифига. Есть разница. Даже 7 различий!!!
https://levelup.gitconnected.com/7-differences-between-arrow-functions-and-regular-functions-in-javascript-9152883a839f
Нужен return
let sum = function(v1, v2) {
v1 + v2;
}
sum(2, 3);
Да, там нужен. Поправил в статье, спасибо.
В конце написано.
Тот же код, но без стрелочных функций:
Но функция же стрелочная???
Устаю очень. Вот и ошибки делаю. Поправил.
Всю эту статью следует очень внимательно перечитать и, может быть, переписать:
1. Вначале статьи есть отсылки к Java, но никаких конкретных сравнений с Java не приведено.
2. не затронуты различия стрелочных и стандартных функций (откуда берётся контекст this, есть ли переменная argoments и т. д.)
3. Почему-то выделен в отдельный подраздел некий «многострочный» формат тела функции вместо просто двух вариантов, когда в первом случае тело функции заключено в фигурные скобки, что требует использования return и короткий вариант, без фигурных скобок, когда по правую сторону стрелки лишь выражение, вычисляющее возвращаемое значение
4. Если уж показывать «сложность» или «многострочность», то, возможно, целесообразнее использовать пример с if или switch, нежели console.log
5. Использование тут let противоречит JavaScript-традициям, которые велят писать const если переприсвоение переменной не подразумевается.
Автор, тут не упомянуто главное: стрелочные функции — это модно и современно. Молодой программист вообще должен знать только стрелочные функции и классы, а эту древность с function выкинуть на помойку истории!
А те, кто используют нестрелочные функции (function, Function, eval), пусть оформляют свои сайты в стиле 1999-го года.
https://localghost.dev/blog/building-a-website-like-it-s-1999-in-2022/