Scope of a function works only when defined in this format not in other. Explanation needed,

- 1 answer

Ad

As described in MDN Javascript. This code gives output as 25.

console.log(square(5));
function square(n) { return n*n }

But this code doesn't.

console.log(square(5));
square = function (n) {
  return n * n;
}

Why so?

Ad

Answer

Ad

The difference is function square is defined at parse time whereas square = function is defined at run time. square is a variable which holds anonymous function. function square(){} always executed at global context

To get the better understanding, Read about variable hoisting in JavaScript

To make it work, define the variable which holds the function expression before calling it.

var square = function(n) {
  return n * n;
}
alert(square(5));

Ad
source: stackoverflow.com
Ad