<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Серый форум &mdash; JScript: Функция, имитирующая цикл For Each в VBScript]]></title>
	<link rel="self" href="https://forum.script-coding.com/extern.php?action=feed&amp;tid=1153&amp;type=atom" />
	<updated>2008-02-13T10:57:08Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.script-coding.com/viewtopic.php?id=1153</id>
		<entry>
			<title type="html"><![CDATA[JScript: Функция, имитирующая цикл For Each в VBScript]]></title>
			<link rel="alternate" href="https://forum.script-coding.com/viewtopic.php?pid=8868#p8868" />
			<content type="html"><![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>]]></content>
			<author>
				<name><![CDATA[wisgest]]></name>
				<uri>https://forum.script-coding.com/profile.php?id=3850</uri>
			</author>
			<updated>2008-02-13T10:57:08Z</updated>
			<id>https://forum.script-coding.com/viewtopic.php?pid=8868#p8868</id>
		</entry>
</feed>
