В чем прикол стрелочных функций в js?

1. TimSawyer (11.08.2020 / 03:00)
Всем привет. Начал изучать js на html академии. Там заставляют писать стрелочные функции. Но я до сих пор не могу понять чем стрелочные функции лучше обычных? Может кто подсказать? baby

2. Вантуз-мен (11.08.2020 / 04:18)
Ну вроде как ничем не лучше, просто синтаксис короче

Это как в php
$fn = fn($x) => $x + $y;
// эквивалентно
$fn = function ($x) use ($y) {
    return $x + $y;
};
Плюс ещё и в том, что $y прокидывать не нужно

3. erasier (12.08.2020 / 16:18)
Программист из тебя выйдет такой себе, т.к. гуглить к сожалению не умеем smile
https://learn.javascript.ru/arrow-functions-basics

4. Дмитрий (13.08.2020 / 01:20)
Самое основное преимущество стрелочных функций над обычными - это область видимости окружающего контейнера.

Для примера набросал самый простой скрипт:
var Obj = {
  data: 'Тест 1',
  getOne: function() {
    return () => {
      alert(this.data+', '+[...arguments].join(', '));
    }
  },
  getTwo: function() {
    return function() {
      alert(this.data+', '+[...arguments].join(', '));
    }
  }
};

/** вернет "Тест 1, Тест 2, Тест 3, Тест 4", 
* т.к. у стрелочной ф-ии есть полный доступ к внешнему окружению **/
Obj.getOne('Тест 2', 'Тест 3', 'Тест 4')();

/** вернет "undefined" для this.data, 
 * а на конструкцию [...arguments] вообще ругнется, 
 * т.к. в ним нет никакого доступа **/
Obj.getTwo('Тест 2', 'Тест 3', 'Тест 4')();

В моем примере стрелочная ф-я в THIS вернет объект Obj (контейнер окружения стрелочной ф-ии), а в обычной ф-ии THIS вернет объект самой функции.

В Vue.js вообще крайне рекомендовано использовать стрелочные ф-ии, чтобы получить доступ к this, через который происходит обращение к переменным и пользовательским функциям окружения.

5. TimSawyer (13.08.2020 / 22:27)
erasier, возможно, когда я стану хорошим специалистом, я буду так же говорить, позабыв о том какие трудности обучения у самого были))
Я гуглил про стрелочные функции) Многие пишут, что их лучше использовать и это вызвало вопрос "Чем?") как в анекдоте:
Едут грузин и армянин в поезде. И армянин говорит грузину:
—Армяне лучше чем грузины.
—Чем? - спокойно спрашивает грузин.
Армянин снова повторяет:
—Армяне лучше чем грузины..
Грузин немного уже напрягся и опять спрашивает —чем?
Армянин опять повторяет:
—Армяне лучше чем грузины.
Тут у грузина кровь закипает и в криках спрашивает:
—Чем?! Вот чем лучше?!
—Чем грузины — отвечает армянин.
Вот и я где не читал про то чем стрелочные функции лучше, пишут что впринцепе одно и то же, только короче и лучше чем обычные функции. Чем лучше? Чем обычные функции. D

6. erasier (15.08.2020 / 20:06)
TimSawyer, чем лучше - тем что короче, наверное smile . Где ты читал, непонятно. Вот тут же написано, первый сайт из гугла
https://learn.javascript.ru/arrow-functions
Короче, тут надо сначала гугл осваивать, а потом уже плавно к изучению js приступать D

URL: https://visavi.net/topics/44402