ExecitionContext, стек, объекты, код функций
Сколько читал, в С++ в стек помещается функция. В JS - только локальные переменные функций и объектов. С объектами вроде понятно (непонятно только чисто для самообразования - почему именно в стеке). А где хранятся сами функции? Есть ещё один стек для них?
|
а для чего эти стеки тебе в js надо? я этим вопросом не задавался, но функции тоже как бы хранятся в переменных:
var a = 1;
var b = function () { return 15; }
console.log(a);
console.log(b);
|
Нужно, чтобы в дальнейшем разобраться с нюансами замыканий - где-то находил пример со вложенными функциями, когда ожидаешь один результат, а получается другой.
Про то, что функции хранятся в переменных - не уверен. Потому что везде пишут, что в контексте исполнения хранятся только локальные переменные, а так же аргументы функций и их названия - никакого кода функций туда не помещается. Получается, сами функции хранится где-то в другом месте, а та же var b содержит в себе не функцию, а адрес, по которому функция лежит. Вот хотел у спецов узнать, как на самом деле. |
вот вам замыкания
<html>
<head><title>example</title></head>
<body>
<script>
function base (a) {
function fn () {
console.log(this);
return a;
}
return fn;
}
var res1 = base(1);
var res2 = base(2);
console.log(res1);
console.log(res2);
console.log(res1.call({}));
console.log(res1());
console.log(res2.call({}));
console.log(res2());
</script>
</body>
</html>
|
Цитата:
http://habrahabr.ru/post/125306/ |
Цитата:
|
Цитата:
|
| Часовой пояс GMT +3, время: 15:23. |