async function() { while (true) { await null; } }Esto bloqueará el subproceso para siempre, porque el bucle de eventos intentará finalizar todas las microtareas en un cuadro.
Pero si el bucle de eventos suspende el procesamiento de la siguiente microtarea después de 1 segundo, el subproceso se puede usar para procesar otro código, por ejemplo, un cuadro de animación.
¿Sería posible que un motor de JavaScript detecte código potencialmente malo?
¡Sí!
¿Es esto útil?
Ciertamente podría ser. Después de todo, el trabajo de TypeScript y (hasta cierto punto) de ESLint es encontrar el código problemático y advertirle.
¿El motor advierte contra código potencial?
¡Algunas veces! Por ejemplo, la mayoría de los motores le advertirán cuando las Promesas rechazadas no se detecten.
¿Por qué no lo hacen para este caso?
No puedo hablar por los fabricantes de motores de JavaScript, pero puedo imaginar que si implementaran una advertencia/algún comportamiento contra el problema de su mascota se basará en una serie de factores, incluida la probabilidad de que esto sea un problema. , lo fácil que es detectar y cuál es el costo en el motor para tratar de averiguar si algo malo está pasando. Nada es gratis y los motores de JavaScript deben ser rápidos.
En mi opinión, es poco probable que alguien cometa este error, y si se comete el error, se nota rápidamente debido a lo malos que son los efectos. Esto no se siente como el caso donde se necesita tomar de la mano.
Pero incluso si este es un problema común, creo que ESLint es probablemente un mejor lugar para que algo lo detecte y le avise.