Issue
I am calling a function on button click like this:
<input type="button" onclick="outer();" value="ACTION">
function outer() {
alert("hi");
}
It works fine and I get an alert:
Now when I do like this:
function outer() {
function inner() {
alert("hi");
}
}
Why don’t I get an alert?
Though inner function has a scope available in outer function.
Solution
The scoping is correct as you’ve noted. However, you are not calling the inner
function anywhere.
You can do either:
function outer() {
// when you define it this way, the inner function will be accessible only from
// inside the outer function
function inner() {
alert("hi");
}
inner(); // call it
}
Or
function outer() {
this.inner = function() {
alert("hi");
}
}
<input type="button" onclick="(new outer()).inner();" value="ACTION">
Answered By – techfoobar
Answer Checked By – Senaida (BugsFixing Volunteer)