Вопрос по javascript – объявить имя функции в объекте, почему? [Дубликат]

2

This question already has an answer here:

Why use named function expressions? 5 answers

Работал над производительностью кода js и увидел такой подход:

window.sample = {

    foo: function foo(a,b){
       // code goes here
    }

    bar: function bar(a,b){
       // code goes here
    }

}

есть ли причина, по которой вы бы замедлили имя функции после слова & quot; function & quot; ?

доза это поможет отладить?

это хорошо или плохо или просто не нужно?

Торможение ....? JJJ
ааа, ты имел ввидуdeclare Joseph
@JosephtheDreamer О, верно. (Контекст «производительность кода» представлял собой красную сельдь.) JJJ

Ваш Ответ

3   ответа
4

Единственная причина в том, что вы можете использовать саму функцию изнутри функции без ссылки на объект:

foo: function foo(a,b){
   return a > 0 ? a + foo(a-1,b) : b;
}

Обратите внимание, что поддержка литералов именованных функций не одинакова для всех браузеров, поэтому вам следует избегать ее использования.

1

именованные функции.

это может быть полезно для отладки: единственное различие, которое я знаю об этом, состоит в том, что вы увидите имена функций, отображаемых в стеке вызовов вместо «javascript anonymous function».

Разве этого недостаточно, если вы делаете console.log (sample); затем? Endless
@ Джозеф ах, я понимаю Endless
@ Бесконечно, я думаю, что @jbabey означал трассировку стека во время ошибок. Если бы у него не было имени, консоль сказала бы что-то вродеanonymous function так как у него нет имени.
0

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

var obj = {
    foo: function foo(node) {
        // Do something to node

        var childNode = node.firstChild;
        while (childNode) {
            foo(childNode);
            childNode = childNode.nextSibling;
        }
    }
};

Название функции также доступно в большинстве браузеров через нестандартныйname свойство функции, которое может помочь идентифицировать функции при отладке или проверке трассировки стека.

IE & lt; 9 имеет некорректную реализацию, поэтому вам нужно проявлять осторожность при ее использовании. Полную информацию можно найти вОтличная статья Юрия Зайцева на эту тему.

Похожие вопросы