The only difference between functional expression and declaration is that they come into execution context at different points of time.
Functional declarations are hoisted to the top of the containing scope before the code in that scope is executed.
hello(); // prints 'hello world'
function hello() {
console.log('hello world');
}
Functional expressions are not hoisted to the top, so they can only be executed, if they have already been loaded into the context.
hello(); // Error. Cannot call.
hello = function() {
console.log('hello world');
}
ES6 arrow functions are functional expressions.