Знайте выражение функции JavaScript против объявления функции, но что это? Выражение именованной функции? [Дубликат]

Возможный дубликат:
JavaScript: var functionName = function () {} против функции functionName () {}
В чем разница между выражением функции и объявлением в Javascript?

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

var abc = function def() {
    console.log("Wait! What??");
}

Я знаю, что это не способ JavaScript, но просто хочу знать несколько вещей:

Что происходит сabc? Почему это работает?abc можно назвать, но неdef, Почему?Это объявление функции или выражение?def являетсяundefined - Почему? Если это должно быть, есть ли утечки памяти?Почемуabc.prototype это функцияdef?

Спасибо

Ответы на вопрос(5)

Ваш ответ на вопрос