Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   ExecitionContext, стек, объекты, код функций (https://javascript.ru/forum/misc/55014-execitioncontext-stek-obekty-kod-funkcijj.html)

nevro 10.04.2015 08:31

ExecitionContext, стек, объекты, код функций
 
Сколько читал, в С++ в стек помещается функция. В JS - только локальные переменные функций и объектов. С объектами вроде понятно (непонятно только чисто для самообразования - почему именно в стеке). А где хранятся сами функции? Есть ещё один стек для них?

skrudjmakdak 10.04.2015 08:40

а для чего эти стеки тебе в js надо? я этим вопросом не задавался, но функции тоже как бы хранятся в переменных:
var a = 1;
var b = function () { return 15; }
console.log(a);
console.log(b);

nevro 10.04.2015 13:06

Нужно, чтобы в дальнейшем разобраться с нюансами замыканий - где-то находил пример со вложенными функциями, когда ожидаешь один результат, а получается другой.
Про то, что функции хранятся в переменных - не уверен. Потому что везде пишут, что в контексте исполнения хранятся только локальные переменные, а так же аргументы функций и их названия - никакого кода функций туда не помещается. Получается, сами функции хранится где-то в другом месте, а та же var b содержит в себе не функцию, а адрес, по которому функция лежит.
Вот хотел у спецов узнать, как на самом деле.

skrudjmakdak 10.04.2015 13:33

вот вам замыкания
<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>

theKingOfJava 10.04.2015 14:28

Цитата:

Сообщение от nevro
А где хранятся сами функции?

Вроде в куче, в составе стекового кадра -- ф-ция + контекст. вот тут посмотрите, как раз вопросы, которые вас интересуют освещаются

http://habrahabr.ru/post/125306/

theKingOfJava 10.04.2015 14:33

Цитата:

Сообщение от nevro
а та же var b содержит в себе не функцию, а адрес, по которому функция лежит.
Вот хотел у спецов узнать, как на самом деле.

Ну да, так же как и все остальное. В js есть только ссылки (правилнее -- сообщения)

Safort 10.04.2015 18:15

Цитата:

Сообщение от skrudjmakdak (Сообщение 365852)
я этим вопросом не задавался, но функции тоже как бы хранятся в переменных

Неа, в переменных хранятся ссылки на функции.


Часовой пояс GMT +3, время: 05:34.