Javascript allows naming and assigning functions at the same time like:
var vname = function fname() {}The function name
fname is available only inside the function as a local variable:
var vname = function fname(){
console.log(typeof vname); // function
console.log(typeof fname); // function
}
console.log(typeof vname); // function
console.log(typeof fname); // undefined
If we “redefine” this local variable inside of the function, we get a strange effect:
var vname = function fname(){
console.log(typeof vname); // function
console.log(typeof fname); // undefined !!!
var fname = 1;
console.log(typeof fname); // number
}
console.log(typeof vname); // function
console.log(typeof fname); // undefined
Obviously the interpreter sees the variable declaration
var fname on entrance into the function and does not provide the function variable at all.
