Can someone please explain to me in a bit more detail what the advantage of not having named functions is?
var funcName = function(){}
function funcName(){}
The problem is that using named functions involves nuances that can be confusing. Generally it's considered idiomatic to just avoid named functions altogether. You can read about some of the nuances here: http://kangax.github.io/nfe/This is not idiomatic. Many developers only use named functions.
The obvious reason is they make stack traces far more readable, though you can get around this by naming functions anyway:
var myFunction = function myFunction() {}
The hoisting 'nuances' you decry are a boon. Hoisting means you never have to worry about the order functions are declared – especially useful in cases where your functions call each other. You also get another avenue to declutter your code by pushing any crufty utility functions to the bottom of the page.Pushing utility functions to the bottom of the current file is another reason to use a modular js architecture.
My takeaway is that it is wise to avoid using named expressions, but fine to stick with anonymous function assignments, or declared functions. To add a third example to your list:
var funcName = function(){};
function funcName(){}
var funcName = function funcName(){}; // <-- Danger!