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) {
  var foo = function() {}
}