вираз функції:
//someFunction(); //wouldn't work when uncommented
var someFunction = function(){ alert('yay'); };
Вираз func у цьому випадку є анонімним, але призначається var для довідки. Це відрізняється від міченого оператора функції наступними способами:
- його не можна підняти (зателефонувавши до того, як буде визначено)
new someFunction().constructor.name === 'someFunction';//false
екземпляри не отримують імені var для constructor.name, оскільки посилання на функцію призначається var, але var, а не функція, прив'язується до імені var
У позначеному оператором функції:
//someFunction(); //works when uncommented
function someFunction(){ alert('yay'); }
- підйомні роботи
new someFunction().constructor.name === 'someFunction'; //true
ім'я прив’язується безпосередньо до функції.
Взагалі кажучи, насправді немає великої причини виражати вар, якщо ви не хочете, щоб виклики не завершувались, якщо все переміщуються або ви визначаєте / призначаєте метод в одному рядку. Я фактично вважаю підйомник корисним для організації об’єктів із внутрішніми визначеннями функцій та методів у нижній частині, щоб я міг перейти до фактичної поведінки об'єкта та зробити однорядкові загальнодоступні визначення методу (просто призначивши функцій this.
з тим самим іменем) все в одному місце для зручності використання. Ви завжди повинні намагатися використовувати мічені оператори для конструкторів, IMO, щоб ви могли ідентифікувати "тип" об'єкта через його конструктор.