Почему происходит вызов функции
Объясните как работает вызов вложенной функции тут:
function f() {
return function g() {
alert("sdf");
};
}
var g = f();
g();
Как бы я логически мыслил: Есть функция f(){ } , есть кнопочка "пуск" - f(); . Если я создам коробочку - var g и положу туда эту кнопочку, то две там кнопочки не станет :) Почему происходит вызов вложенной функции? или тут:
function getFunc() {
var func = function() { alert("dsf"); };
return func;
}
getFunc()(); // А если бы у меня было 2 вложенные функции?
Вызов getFunc()(); непонятен. Почему он вызывает вложенную функцию. А если бы их было 2, 3 и более? |
Не понял, а какого поведения вы ожидаете?
Цитата:
function Rec(){
return Rec
}
Rec.toString = function(){return '[function Rec]'}
alert( Rec()()()()()()()()()()()()()()()()()()()()()()()() )
=) |
dmitry111, функция f() возвращает другую функцию. Т.о.
var g = f(); превращает g в функцию. Далее идет ее вызов... g() |
Сработает и так...
function f() {
return function () {
alert("sdf");
};
}
var g = f();
g();
|
dmitry111, что есть для тебя вообще "вложеная функция"? :)
|
Aetae,
Имел в виду это:
function getFunc() {
var func = function() { alert("1"); };
var func2 = function() { alert("2"); };
var func3 = function() { alert("3"); };
}
getFunc()/*вызов getFunc*/()/*вызов func*/()/*вызов func2*/()/*вызов func3*/;
Это не работает, знаю) Но хотелось бы понять логику выполнения скрипта интерпретатором |
Цитата:
function f() {
return function g() {
alert("sdf");
};
}
var g = f();
g();
Тут происходит только вызов вложенной функции? Так? |
Цитата:
function f() {
return function g() {
alert("sdf");
};
}
var g = f();
g();
в данном примере возвращаемый объект? Нет? |
Цитата:
|
Цитата:
Там делается то, что я написал выше. 1. переменной присвойвается некое значение, которое возвращает функция f()... Только значением является так же функция... 2. Потом эта функция вызывается... Цитата:
Для меня тут есть функция, которая возвращает результат в виде другой функции и не более того... :) |
Цитата:
Есть функция и есть то, что она возвращает. Все! Более ничего придумывать не нужно. :) |
Цитата:
|
|
| Часовой пояс GMT +3, время: 22:05. |