In a named function expression, the function’s name is bound only inside its own body, allowing it to recurse, but it is not added to the surrounding scope. So fact(4) computes 24 via internal recursion, yet referencing fact from outside finds nothing and typeof fact is "undefined". This scoping is why the inner name is safe to use even if no outer variable shares it.