Existe alguma boa razão para passar uma string para setTimeou

Todos sabemos que passar uma string parasetTimeout (ousetInterval) é mau, porque é executado no escopo global, tem problemas de desempenho, é potencialmente inseguro se você estiver injetando algum parâmetro, etc. Portanto, isso é definitivamente obsoleto:

setTimeout('doSomething(someVar)', 10000);

a favor disso:

setTimeout(function() {
    doSomething(someVar);
}, 10000);

Minha pergunta é: pode haver um motivo para fazer o primeiro? É issosempr preferível? Se não for, por que é permitido?

O único cenário em que pensei é querer usar uma função ou variável que exista no escopo global, mas que foi substituída no escopo local. Isso me parece um design de código ruim, no entanto ...

questionAnswers(2)

yourAnswerToTheQuestion