<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Серый форум &mdash; JScript: Функция, имитирующая цикл For Each в VBScript]]></title>
		<link>https://forum.script-coding.com/viewtopic.php?id=1153</link>
		<atom:link href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=1153&amp;type=rss" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «JScript: Функция, имитирующая цикл For Each в VBScript».]]></description>
		<lastBuildDate>Wed, 13 Feb 2008 10:57:08 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[JScript: Функция, имитирующая цикл For Each в VBScript]]></title>
			<link>https://forum.script-coding.com/viewtopic.php?pid=8868#p8868</link>
			<description><![CDATA[<p>Описав функцию<br /></p><div class="codebox"><pre><code>function ForEachItem(Items, Do) {
  with (new Enumerator(Items))
    for (; !atEnd(); moveNext()) if (Do(item())) break;
}</code></pre></div><p>можно VBScript-цикл<br /></p><div class="codebox"><pre><code>For Each element In group
    [операторы]
    [Exit For]
    [операторы]
Next</code></pre></div><p>переписать на JScript так<br /></p><div class="codebox"><pre><code>ForEachItem(group,
  function (element) {
    [операторы]
    [return true;]
    [операторы]
  }
);</code></pre></div><p>Примеры использования <em>ForEachItem()</em>:<br /></p><div class="codebox"><pre><code>var Result=&quot;&quot;;
var fso=new ActiveXObject(&quot;Scripting.FileSystemObject&quot;);

ForEachItem(fso.GetFolder(&quot;C:\\Program Files&quot;).SubFolders,
  function (Folder) {Result+=Folder.Name+&quot;\n&quot;;}
);
WScript.Echo(Result);</code></pre></div><div class="codebox"><pre><code>ForEachItem([10, -20, 30, 40, 0, 50], function (a) {
  if (a&lt;0) return; //continue
  if (a==0) return true; //break
  WScript.Echo(a);}
);</code></pre></div><div class="codebox"><pre><code>var Result=&quot;&quot;;
var Shell=new ActiveXObject(&quot;Shell.Application&quot;);

ForEachItem(Shell.NameSpace(&quot;C:\\&quot;).Items(),
  function (FolderItem) {Result+=FolderItem.Path+&quot;\n&quot;;}
);
WScript.Echo(Result);</code></pre></div><div class="codebox"><pre><code>var Shell=new ActiveXObject(&quot;Shell.Application&quot;);

ForEachItem(Shell.Windows(), function (IE) {
  if (IE) WScript.Echo(IE.LocationURL);}
);</code></pre></div><p>Следует заметить, что переменные, описанные непосредственно в «теле цикла», будут сохранять свои значения только до конца текущей итерации.</p>]]></description>
			<author><![CDATA[null@example.com (wisgest)]]></author>
			<pubDate>Wed, 13 Feb 2008 10:57:08 +0000</pubDate>
			<guid>https://forum.script-coding.com/viewtopic.php?pid=8868#p8868</guid>
		</item>
	</channel>
</rss>
