провоментирую я наверно, если никто не возражает
function t(elem, str) {
for (var i = 0; i < str.length; i++)//цикл. перебирае последовательно все буквы переменной str
setTimeout(function(char) { return function() { elem.innerHTML += char; } }(str.charAt(i)), i * 1000);//вешает на setTimeout динамически сгенерированную функцию, через i*1000 милисекунд
}
t(document.getElementById(qwezxc), 'Hello, World')//данный вызов функции может быть где угодно. например по нажатию кнопки, либо в составе какой-нибудь другой функции
теперь по поводу первого параметра setTimeout:
он создает анонимную функцию, которая делает
return function() { elem.innerHTML += char; }
//возвращаем еще одну анонимную функцию, которая занимается добавлением буквы на страницу, внутрь элемента elem
после этого первая анонимная функция запускается на выполнение с помощью (str.charAt(i)), и возвращает в setTimeout ссылку на вторую анонимную функцию.
//первым параметром функции setTimeout должна быть функция, не
//принимающая параметров. Если мы вместо этого передаем строку кода,
//то он автоматически преобразуется в функцию
//таким образом следующие три конструкции идентичны
setTimeout("alert('Hello, World');",1000);
//
function func()
{alert('Hello, World');}
setTimeout(func,1000);
//
func=function()//альтернативный способ создания функции
{alert('Hello, World');}
setTimeout(func,1000);
Также советую почитать эту статью
http://javascript.ru/tutorial/basic/functions