Muitos desenvolvedores desaprovam a prática de passar strings para setTimeout devido a preocupações de desempenho, riscos potenciais de segurança e seu uso obsoleto status. No entanto, pode haver raros cenários em que essa sintaxe pode ser benéfica.
A sintaxe tradicional para setTimeout e setInterval envolvia passar uma string que representava o código a ser executado. Por exemplo:
setTimeout('doSomething(someVar)', 10000);
No entanto, o JavaScript moderno promove o uso de referências de função:
setTimeout(function() {
doSomething(someVar);
}, 10000);
O debate surge ao considerar se há alguma razão válida para se desviar da sintaxe recomendada. Um possível argumento poderia ser o desejo de acessar uma função ou variável que reside no escopo global, mas pode ter sido substituída localmente.
Apesar desse raciocínio, o uso de strings em setTimeout é fortemente desencorajado. Variáveis globais ainda podem ser acessadas através das propriedades do objeto janela. Por exemplo:
setTimeout(window.doSomething(someVar), 10000);
A permissão de strings como argumentos para setTimeout e setInterval é provável enraizada em fatores históricos. As versões anteriores do JavaScript suportavam apenas strings. Adicionar a capacidade de passar referências de função foi uma adição posterior. Para garantir a compatibilidade com versões anteriores, os navegadores ainda permitem a sintaxe de string, mesmo que ela esteja obsoleta.
Embora seja tecnicamente possível passar strings para setTimeout em certos casos, a prática geralmente não é recomendado devido à disponibilidade de abordagens alternativas. O uso de referências de função proporciona melhor desempenho, aumenta a segurança e segue as diretrizes de código modernas. Portanto, a sintaxe de string obsoleta deve ser evitada para maior clareza, capacidade de manutenção e qualidade geral do código.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3