<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Comments on: Тонкости ECMA-262-3. Часть 8. Стратегия передачи параметров в функцию.</title>
	<atom:link href="http://dmitrysoshnikov.com/ecmascript/ru-chapter-8-evaluation-strategy/feed/" rel="self" type="application/rss+xml" />
	<link>http://dmitrysoshnikov.com/ecmascript/ru-chapter-8-evaluation-strategy/</link>
	<description>by Dmitry Soshnikov</description>
	<lastBuildDate>Sun, 13 May 2012 08:41:14 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
	<item>
		<title>By: Dmitry Soshnikov</title>
		<link>http://dmitrysoshnikov.com/ecmascript/ru-chapter-8-evaluation-strategy/comment-page-1/#comment-12830</link>
		<dc:creator>Dmitry Soshnikov</dc:creator>
		<pubDate>Mon, 13 Feb 2012 05:16:06 +0000</pubDate>
		<guid isPermaLink="false">http://dmitrysoshnikov.com/?p=35#comment-12830</guid>
		<description>@&lt;b&gt;pashak&lt;/b&gt;

В данном случае Ваш код свидетельствует о том, что в конкретном движке задан один и тот же &quot;размер&quot; стека (скорее всего -- даже не сам физический размер памяти, а допустимое &lt;em&gt;количество&lt;/em&gt; рекурсивного выделения нового стек-фрейма -- т.е. то, что и содержит Ваша переменная &lt;code&gt;COUNTER&lt;/code&gt;).

Передача всегда идет по значению. В случае примитива -- сам примитив. В случае объекта -- его адрес.

Схематично:

[js]V = {};

CallStack = [
  frame_1: {arg: addr(V)},
  frame_2: {arg: addr(V)},
  // и т.д. до Stack Overflow
];[/js]

где схематичная функция &lt;code&gt;addr(...)&lt;/code&gt; возвращает копию адреса объекта.

Примитив:

[js]V = &quot;foo&quot;;

CallStack = [
  frame_1: {arg: &quot;foo&quot;},
  frame_2: {arg: &quot;foo&quot;},
  // и т.д. до Stack Overflow
];[/js]

В случае объекта присвоение аргументу внутри функции лишь меняет его значение на &lt;em&gt;новый адрес&lt;/em&gt;, но не модифицирует значение по старому адресу.

Также я эту тему описывал в разделе &lt;a href=&quot;http://dmitrysoshnikov.com/ecmascript/es5-chapter-3-1-lexical-environments-common-theory/#name-binding&quot; rel=&quot;nofollow&quot;&gt;Name Binding&lt;/a&gt; статьи &lt;a href=&quot;http://dmitrysoshnikov.com/ecmascript/es5-chapter-3-1-lexical-environments-common-theory/&quot; rel=&quot;nofollow&quot;&gt;Lexical Environments&lt;/a&gt;. Рекомендую к прочтению -- там наглядно видно, что происходит при присвоении &lt;em&gt;(rebinding)&lt;/em&gt; и модификации свойств &lt;em&gt;(mutation)&lt;/em&gt;.</description>
		<content:encoded><![CDATA[<p>@<b>pashak</b></p>
<p>В данном случае Ваш код свидетельствует о том, что в конкретном движке задан один и тот же &#8220;размер&#8221; стека (скорее всего &#8212; даже не сам физический размер памяти, а допустимое <em>количество</em> рекурсивного выделения нового стек-фрейма &#8212; т.е. то, что и содержит Ваша переменная <code>COUNTER</code>).</p>
<p>Передача всегда идет по значению. В случае примитива &#8212; сам примитив. В случае объекта &#8212; его адрес.</p>
<p>Схематично:</p>
<pre class="brush: jscript; title: ;">V = {};

CallStack = [
  frame_1: {arg: addr(V)},
  frame_2: {arg: addr(V)},
  // и т.д. до Stack Overflow
];</pre>
<p>где схематичная функция <code>addr(...)</code> возвращает копию адреса объекта.</p>
<p>Примитив:</p>
<pre class="brush: jscript; title: ;">V = &quot;foo&quot;;

CallStack = [
  frame_1: {arg: &quot;foo&quot;},
  frame_2: {arg: &quot;foo&quot;},
  // и т.д. до Stack Overflow
];</pre>
<p>В случае объекта присвоение аргументу внутри функции лишь меняет его значение на <em>новый адрес</em>, но не модифицирует значение по старому адресу.</p>
<p>Также я эту тему описывал в разделе <a href="http://dmitrysoshnikov.com/ecmascript/es5-chapter-3-1-lexical-environments-common-theory/#name-binding" rel="nofollow">Name Binding</a> статьи <a href="http://dmitrysoshnikov.com/ecmascript/es5-chapter-3-1-lexical-environments-common-theory/" rel="nofollow">Lexical Environments</a>. Рекомендую к прочтению &#8212; там наглядно видно, что происходит при присвоении <em>(rebinding)</em> и модификации свойств <em>(mutation)</em>.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: pashak</title>
		<link>http://dmitrysoshnikov.com/ecmascript/ru-chapter-8-evaluation-strategy/comment-page-1/#comment-12828</link>
		<dc:creator>pashak</dc:creator>
		<pubDate>Sun, 12 Feb 2012 22:28:07 +0000</pubDate>
		<guid isPermaLink="false">http://dmitrysoshnikov.com/?p=35#comment-12828</guid>
		<description>Здравствуйте, Дмитрий.
Спасибо за подробную хорошую статью.
Скажите, будет ли данный код объективным для проверки, каким способом передаются аргументы в функцию, и почему:
[js]
V={};
COUNTER=0;
(function recourse(arg){
	COUNTER++;
	recourse(arg);
})(V);
[/js]
После того, как произойдёт переполнение стека, можно глянуть, каково значение у COUNTER. После этого V можно присвоить значение простого типа, например, строку.
У меня для разных типов одно и то же значение. Можно ли, исходя из этого, сказать, что любой аргумент передаётся по копии ссылки?
Спасибо.</description>
		<content:encoded><![CDATA[<p>Здравствуйте, Дмитрий.<br />
Спасибо за подробную хорошую статью.<br />
Скажите, будет ли данный код объективным для проверки, каким способом передаются аргументы в функцию, и почему:</p>
<pre class="brush: jscript; title: ;">
V={};
COUNTER=0;
(function recourse(arg){
	COUNTER++;
	recourse(arg);
})(V);
</pre>
<p>После того, как произойдёт переполнение стека, можно глянуть, каково значение у COUNTER. После этого V можно присвоить значение простого типа, например, строку.<br />
У меня для разных типов одно и то же значение. Можно ли, исходя из этого, сказать, что любой аргумент передаётся по копии ссылки?<br />
Спасибо.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Dmitry Soshnikov</title>
		<link>http://dmitrysoshnikov.com/ecmascript/ru-chapter-8-evaluation-strategy/comment-page-1/#comment-12746</link>
		<dc:creator>Dmitry Soshnikov</dc:creator>
		<pubDate>Wed, 08 Feb 2012 05:26:21 +0000</pubDate>
		<guid isPermaLink="false">http://dmitrysoshnikov.com/?p=35#comment-12746</guid>
		<description>@&lt;b&gt;arni&lt;/b&gt;, нет, в JS, если сравнивать с Вашей схемой, то это RO (одна звездочка-указатель), т.е. нельзя присвоить объекту-аргументу, и чтобы это отразилось на переданном снаружи объекте. Присваивание лишь свяжет аргумент с новым объектом в памяти. А вот менять свойства объекта можно -- и это отразится снаружи.</description>
		<content:encoded><![CDATA[<p>@<b>arni</b>, нет, в JS, если сравнивать с Вашей схемой, то это RO (одна звездочка-указатель), т.е. нельзя присвоить объекту-аргументу, и чтобы это отразилось на переданном снаружи объекте. Присваивание лишь свяжет аргумент с новым объектом в памяти. А вот менять свойства объекта можно &#8212; и это отразится снаружи.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: arni</title>
		<link>http://dmitrysoshnikov.com/ecmascript/ru-chapter-8-evaluation-strategy/comment-page-1/#comment-12651</link>
		<dc:creator>arni</dc:creator>
		<pubDate>Sat, 04 Feb 2012 23:04:02 +0000</pubDate>
		<guid isPermaLink="false">http://dmitrysoshnikov.com/?p=35#comment-12651</guid>
		<description>Самого главного то и не хватает.
Можно ли из функции вернуть объект в аргументе (статья то про ES)?
в С все просто :Одна звездочка - объект RO, две - RW</description>
		<content:encoded><![CDATA[<p>Самого главного то и не хватает.<br />
Можно ли из функции вернуть объект в аргументе (статья то про ES)?<br />
в С все просто :Одна звездочка &#8211; объект RO, две &#8211; RW</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Dmitry Soshnikov</title>
		<link>http://dmitrysoshnikov.com/ecmascript/ru-chapter-8-evaluation-strategy/comment-page-1/#comment-12451</link>
		<dc:creator>Dmitry Soshnikov</dc:creator>
		<pubDate>Mon, 30 Jan 2012 01:08:22 +0000</pubDate>
		<guid isPermaLink="false">http://dmitrysoshnikov.com/?p=35#comment-12451</guid>
		<description>@&lt;b&gt;Nemo&lt;/b&gt;, рад, что полезно.

Да, я знаю того Дмитрия Сошникова, и даже встречался с ним на одной из конференций в Москве ;)</description>
		<content:encoded><![CDATA[<p>@<b>Nemo</b>, рад, что полезно.</p>
<p>Да, я знаю того Дмитрия Сошникова, и даже встречался с ним на одной из конференций в Москве <img src='http://dmitrysoshnikov.com/wp-includes/images/smilies/icon_wink.gif' alt=';)' class='wp-smiley' /> </p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Nemo</title>
		<link>http://dmitrysoshnikov.com/ecmascript/ru-chapter-8-evaluation-strategy/comment-page-1/#comment-12442</link>
		<dc:creator>Nemo</dc:creator>
		<pubDate>Sun, 29 Jan 2012 20:49:51 +0000</pubDate>
		<guid isPermaLink="false">http://dmitrysoshnikov.com/?p=35#comment-12442</guid>
		<description>Спасибо за курс статей!

Невероятное совпадение то что ваш однофамилец Дмитрий Сошников был преподавателем в институте (когда я там учился) и он также занимается функциональными ЯП, вот, например, 
его страница на озоне ozon.ru/context/detail/id/6210136/

вот такие совпадения бывают</description>
		<content:encoded><![CDATA[<p>Спасибо за курс статей!</p>
<p>Невероятное совпадение то что ваш однофамилец Дмитрий Сошников был преподавателем в институте (когда я там учился) и он также занимается функциональными ЯП, вот, например,<br />
его страница на озоне ozon.ru/context/detail/id/6210136/</p>
<p>вот такие совпадения бывают</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Dmitry Soshnikov</title>
		<link>http://dmitrysoshnikov.com/ecmascript/ru-chapter-8-evaluation-strategy/comment-page-1/#comment-11936</link>
		<dc:creator>Dmitry Soshnikov</dc:creator>
		<pubDate>Sat, 14 Jan 2012 09:22:25 +0000</pubDate>
		<guid isPermaLink="false">http://dmitrysoshnikov.com/?p=35#comment-11936</guid>
		<description>@&lt;b&gt;Roma&lt;/b&gt;, спасибо. Да, книга тоже в планах.</description>
		<content:encoded><![CDATA[<p>@<b>Roma</b>, спасибо. Да, книга тоже в планах.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Roma</title>
		<link>http://dmitrysoshnikov.com/ecmascript/ru-chapter-8-evaluation-strategy/comment-page-1/#comment-11905</link>
		<dc:creator>Roma</dc:creator>
		<pubDate>Fri, 13 Jan 2012 16:48:40 +0000</pubDate>
		<guid isPermaLink="false">http://dmitrysoshnikov.com/?p=35#comment-11905</guid>
		<description>Я очень благодарен вам за ваш ресурс и за родной русский язык.
Благодаря этому удалось глубже понять js, возможно увидела мир книга с под вашего пера буду рад приобрести.</description>
		<content:encoded><![CDATA[<p>Я очень благодарен вам за ваш ресурс и за родной русский язык.<br />
Благодаря этому удалось глубже понять js, возможно увидела мир книга с под вашего пера буду рад приобрести.</p>
]]></content:encoded>
	</item>
</channel>
</rss>

