Возможно ли как-то обратится к (под) функции?
то есть как-то обратится к функции, которая находится в функции...
Ни разу не видел чего-то подобного.
Пример на скрине:

В JavaScript функцию можно использовать в качестве значения переменной.
Если хочешь использовать внутреннюю функцию снаружи, то присвой ее переменной, объявленной снаружи.
var abcd = function() { alert("Лабуда"); };
function abc() {
alert("Привет!");
abcd = function() {
alert("Привет, мир!");
};
}
abcd();
abc();
abcd();
Такой код выдает три сообщения:
1) Лабуда
2) Привет
3) Привет, мир!
А если хочешь, чтобы функция abcd() была доступна изначально, то просто вынеси ее из abc() наружу.
const calc = function (a, sign, b) {
const sum = function () {
return a + b;
};
const difference = function () {
return a - b;
};
const multiply = function () {
return a * b;
};
const divide = function () {
return b? a / b : "Деление на ноль!";
};
switch (sign) {
case '+': return sum;
case '-': return difference;
case '*': return multiply;
case '/': return divide;
default: return "Неизвестная ошибка!";
}
};
let a = 5;
let b = 7;
let sum = calc(a, '+', b)();
let difference = calc(a, '-', b)();
let multiply = calc(a, '*', b)();
let divide = calc(a, '/', b)();
console.log(a+' + '+b+' = '+sum+'\n'+a+' - '+b+' = '+difference+'\n'+a+' * '+b+' = '+multiply+'\n'+a+' / '+b+' = '+divide)
Покажется странно, но функция - на самом деле объект!) Поэтому в его имени можно сохранить разные свойства, как у обычного объекта)
abc(); // Сработает alert('abc'), потом внутренний вызов xyz();
abc.child(); // Сработает внутренняя функция xyz
function abc(){
alert('abc');
xyz(); /* Функцию ниже создали отдельно, чтобы можно было здесь
свободно её использовать */
abc.child = xyz; /* Но еще присвоили её к свойству .child - теперь снаружи
можно вызывать её через abc.child(); */
function xyz(){
alert('xyz');
}
}
var a = ( function() {
// ..
function b() {
alert( "Hello from B!" );
}
function c() {
alert( "Hello from C!" );
}
return {
b: b,
c: c
}
})();
a.b();
a.c();
https://jsfiddle.net/ar9wo7hd/
Функция созданная внутри другой функции, можно обращаться только внутри той функции где она была объявлена, снаружи она будет невидна для других, это понятие про область действия идентификаторов, это относится к именам функций, переменных.
Вот вариант решения:
function abc() {
alert("One start");
abcd = function() {
alert("Two start");
}
//start function #2 abcd()
abcd();
abcd = function() {
alert("Three start");
}
// start function #3 abcd()
abcd();
}
abc(); // start function #1