does requestAnimationFrame only run before repaint or per frame?

according to what most articles claims, requestAnimationFrame runs before the browser repaints, and fits in the screen refresh rate. However my understanding is that the browser only repaints when some codes changed what will be on the screen, and the requestAnimationFrame should not be called if nothing happens. I tried this piece of code, it shows that requestAnimationFrame will be called no matter the view changes or not. what part do I understand wrong?

<!DOCTYPE html>
<html lang="en">
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <div id="some">aaa</div>
    function step(timeStamp) {
      console.log("aaa"); // gets printed every frame