Avatar ·

Desplazamiento de página hacia arriba con JavaScript: solución simple y confiable

¡Hola a todos! Soy nuevo en JavaScript y no puedo entender el desplazamiento de página hacia arriba. En mi sitio hay una página larga con contenido, y quiero hacer un botón "Arriba" para que los usuarios puedan volver rápidamente al inicio. Probé usar `window.scrollTo(0, 0)` — parece funcionar, pero es brusco, sin animación. Quiero un desplazamiento suave. Intenté hacerlo con `window.scrollBy()`, pero me confundí en la lógica. También probé el método antiguo `window.scrollTo({ top: 0, behavior: 'smooth' })`, pero en algunos navegadores no funciona, especialmente en versiones antiguas de Safari. Aquí está mi código actual, que armé:
function scrollToTop() {
  window.scrollTo(0, 0);
}
El botón funciona, pero es brusco. ¿Pueden decirme cómo hacer un desplazamiento suave que funcione en todos los navegadores modernos? ¿Y se puede agregar animación con cambio de velocidad — que primero vaya rápido y luego se ralentice? Agradecería un ejemplo con explicaciones. ¡Gracias! P.D. No sugieran jQuery — quiero