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, время: 01:43. |