joesid joesid - 18 days ago 5
Javascript Question

JavaScript variable name same with function name

I have the following code :

function a(x) {
return x * 2
}

var a;
alert(a);


why alert displays

function a(x) {
return x * 2
}


???? IF I put var a=4 , alert displays 4
but like this 'a' will be recognized as a function

Why this is happening?

Answer

Functions are a type of object which are a type of value.

Values can be stored in variables (and properties, and passed as arguments to functions, etc).

A function declaration:

  • Creates a named function
  • Creates a variable in the current scope with the same name as the function (unless such a variable already exists)
  • Assigns the function to that variable
  • Is hoisted

A var statement:

  • Creates a variable in the current scope with the specified name (unless such a variable already exists)
  • Is hoisted
  • Doesn't assign a value to that variable (unless combined with an assignment operator)

Both your declaration and var statement are hoisted. Only one of them assigns a value to the variable a.

Comments