While most script engines support function declarations within blocks, from browser to browser, the implementations are inconsistent with each
other.
Noncompliant code example
if (x) {
function foo() {} //foo is hoisted in Chrome, Firefox and Safari, but not in Edge.
}
Compliant solution
if (x) {
const foo = function() {}
}