Ваш код не выполняется из-за jsfiddle.Он обернул ваш код в обработчик загрузки, таким образом удерживая doSomething
вне глобального пространства имен.Поэтому, когда setTimeout попытался выполнить ваш код, он не смог найти doSomething
.Измените jsfiddle так, чтобы он выполнял «no wrap», и все хорошо: http://jsfiddle.net/gilly3/PRff7/3/
Если вы не переносите свой вызов на doSomething
в строке, он также будет работать, потому что setInterval
получает прямоессылка на doSomething
, которая находится в той же области.Для этого не нужна глобальная ссылка.