2014-12-08 3 views
3

Иногда я вижу подобные примеры, и мне интересно, что это такое. Я имею в виду this.methodA = function methodA() {} Почему это?Именованные функции против анонимных функций

Единственное, что я могу себе представить, это использовать его без , если у вас есть проблема с областью обзора. У кого-нибудь есть идея?

function MyModule() { 

    this.myMethod = function myMethod() { 
    alert('my method'); 
    }; 

    this.myOtherMethod = function myOtherMethod() { 
    alert('my other method'); 
    }; 

} 
// Versus: 
function MyModule() { 

    this.myMethod = function() { 
    alert('my method'); 
    }; 

    this.myOtherMethod = function() { 
    alert('my other method'); 
    }; 

} 
+0

Это может использоваться для моделирования среды с классами. Теперь вы можете запустить: var a = new MyModule(); a.myMethod(); , Это предупредит «мой метод». –

+0

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

ответ

3

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

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

+0

Спасибо за ваш ответ. Это единственный? – barry

Смежные вопросы