We all know that passing a string to setTimeout (or setInterval) is evil, because it is run in the global scope, has performance issues, is potentially insecure if you're injecting any parameters, etc. So doing this is definitely deprecated:
setTimeout('doSomething(someVar)', 10000);
in favour of this:
setTimeout(function() {
doSomething(someVar);
}, 10000);
My question is: can there ever be a reason to do the former? Is it ever preferable? If it isn't, why is it even allowed?
The only scenario I've thought of is of wanting to use a function or variable that exists in the global scope but has been overridden in the local scope. That sounds to me like poor code design, however...