Страницы

Поиск по вопросам

пятница, 13 декабря 2019 г.

Стоит ли функцию как-либо называть или оставить анонимной?

#javascript #функции #dom #prototype


Есть такой код:

if (!Element.prototype.remove) {
  Element.prototype.remove = function remove() {   // <----
    if (this.parentNode) {
      this.parentNode.removeChild(this);
    }
  };
}


Это обычный полифилл для .remove()

Меня интересует вопрос - есть ли какой-либо смысл называть как-то функцию вот тут:

Element.prototype.remove = function remove() { ... }

или в этом смысла нет, и можно её оставить анонимной?

Element.prototype.remove = function() { ... }
    


Ответы

Ответ 1



Имеет. При отладке эта функция будет выводиться в консоль в том виде, в каком она была в коде, поэтому в случае функции с именем будет сразу ясно, что это за функция. А ещё в ES6 вводится свойство name, которое в случае анонимной функции оказывается пустым. function Smth() {} Smth.prototype.doSmth = function doSmth() {} Smth.prototype.doOther = function () {} var x = new Smth(); console.log(x.doSmth); console.log(x.doOther); console.log(x.doSmth.name); console.log(x.doOther.name);

Ответ 2



Никакого смысла не несёт. Только дублирвоание имени, на мой взгляд. Но, возможно, кому то нравится такой подход с явным именованием.

Ответ 3



Если в теле функции нет необходимости в доступе к самой себе, то смело можно использовать анонимный вариант наименования. Подробнее тут: Именованные функциональные выражения

Комментариев нет:

Отправить комментарий