Показать сообщение отдельно
  #1 (permalink)  
Старый 31.03.2012, 19:45
Новичок на форуме
Отправить личное сообщение для salikoff Посмотреть профиль Найти все сообщения от salikoff
 
Регистрация: 24.09.2011
Сообщений: 7

Рекурсия перезаписывает локальные переменные! Почему?
function processFolder(oSource, strTarget)
	{
	for (var ext in extArray)
		{
		var source = oSource.Path + "\\*." + extArray[ext];
		try {fso.CopyFile(source, strTarget)} catch(e) {}
		}
	var subFolders = new Enumerator(oSource.SubFolders);
	for (; !subFolders.atEnd(); subFolders.moveNext())
		{
		var target = strTarget + "\\" + subFolders.item().Name;
		processFolder(subFolders.item(), target)	
		}
	}

При рекурсивном вызове функции processFolder локально объявленные переменные subFolders и source перезаписываются и, соответственно, весь алгоритм рушится. Почему так происходит? Ведь явно указано var перед определением переменной. Как этого избежать? Ничего не понимаю. Прошу вашего совета, дамы и господа.
Ответить с цитированием