там дело не в замыкании, а в том, что
function testf() {
return 'OK';
}
это
var testf = function() {
return 'OK';
}
т.е. внутренняя функция - локальна
если же написать
testf = function() {
return 'OK';
}
то все будет работать
я думаю так
p.s. Igor88, но это не значит, что нужно оставить определение функции внутри обработчика события load