Я подразумеваю буквально страницу по адресу localhost (127.0.0.1, если так угодно). Физически ее страницы не существует. Как я понимаю создается она где-то через php, но где - информации не нашел.
Да, все встало на места, теорию немного пропускал, думая, что концепция такая-же, как и в других ЯП, но судя по структуре js, тут многое придется переосмыслить.
itsjustmypage: хорошо, я прочитал и все понял. Т.е. при проходе функции в ПЕРВЫЙ раз(когда присваиваем var x=shit(); в count записывается единица, потом внутри возвращаемый функции это значение записывается в объекте scope и когда мы запускаем x() - мы запускаем грубо говоря возвращаемую функцию (т.к. shit() делает return function) и запускаем уже отдельную функцию со своим свойством .count в его scope, так? Т.е. чтобы записалось в scope - мы должны обязательно внешнюю переменную использовать? Или все внешние переменные пишутся в scope?
Алексей: где в это время хранится count? Как она вообще может храниться, если запускаем мы только вложенную функцию, которая и знать не знает об count, каким образом она достает count, даже если она лезет за ним во-вне, но в этом вовне лежит "var count=0;" что за магия? Или этого "var count=0;" как бы не существует? То тогда где этот count сохраняется?
Вот, полюбуйтесь:
----------------
function shit() {
alert("a");
return function(){alert("b")}
};
var x=shit();
x();
x();
----------------
Вопрос: почему alert("a") вызывается: когда мы присваеваем переменной x=shit(), почему операция присваивания вызывает вызов функции?
И почему при последующих x() вызывается только дочерняя функция, и где тогда еб** в рот хранится count в коде из шапки?
Может я чего из основ функций не понимаю, найти эту заветную тему я не могу, гугл не понимает, может подскажите, что это за магическое свойство, что при var a=b(); - сразу приводит к выполнению b(), а потом a(); не работает.
Как такое вообще реально, хоспаде.
Вот например:
-------------------------
function shit() {
alert("s");
var counter = 0;
return function () {return counter += 1;}
};
var add=shit();
add();
add();
add();
-------------------------
Алерт в родительской функции вызывается только один раз, почему? Почему родительская функция совершает суицид? Где логика этого действия?
Я понимаю, что при уничтожении родительской функции, функция которая находится внутри нее - продолжает жить, но откуда она *** берет значениеcounter? Разве не все тело функции должно уничтожаться?
Или вот это чудо:
---------------------------
function shit() {
alert("s");
};
var add=shit();
add();
---------------------------
//var add=shit() - выводит alert, а add() - говорит, что это не функция.
Что это такое? Как это работает? Почему shit() - это не shit()?
Алексей: ну я понял концепт, тема актуальность потеряла. Было интересно почитать на простом языке, почти в каждом туториале используют для примера ajax, который я пока не изучал, а узнать про это интересно, теперь все встало на свои места.