setTimeout(fn, 1000 / 60) の 1000/60 は16として処理される
requestAnimationFrame
の代わりに書かれていることがありますが、単純に16と書いたら良いと思います。
JavaScriptでぴったりの時間で処理はできないのでこだわるポイントではありませんが(';')
ちなみにscrollTo(0, 1.9)
だと小数点切り下げでpageYOffsetは1になります。
例えば縦に+500px移動したい場合、絶対値のscrollToで移動するなら目標地点に移動できますが、scrollByで累積して移動していると目的の位置に移動できないかもしれません。