0
 <body>
    <div class="circle">
        <div class="unit"></div>
    </div>
<script src="script.js"></script>                                                                                                    /   </body>




let unit = document.querySelector(".unit");
let vh;
let vw;
setInterval((screenMeasure) => {
    vh = window.innerHeight / 100;
    vw = window.innerWidth / 100;
}, 1);
let unitHeight = 5 * vh;

Если в консоли набрать 5 * vh выдает нормальный результат, но если запросить unitHeight то результатом будет NaN. Почему так?

Geharka
  • 19
  • 4
  • Почему так? - потому что присваивание vh выполняется в коллбеке setInterval – Grundy Jul 26 '22 at 18:29
  • @Jean-Claude, причем тут область видимости? – Grundy Jul 26 '22 at 18:30
  • 2
    да и вообще, setInterval() выполнится после строки unitHeight = 5 * vh – Jean-Claude Jul 26 '22 at 18:38
  • undefined * 5 === NaN – ΝNL993 Jul 26 '22 at 21:03
  • @ΝNL993 почему vh = undefined? – Geharka Jul 27 '22 at 19:18
  • @Geharka потому что он был изменён через одну миллисекунду, а по стандарту он undefined. Либо делайте так: let unitHeight; setTimeout(() => { unitHeight = 5 * vh }), чтобы vh успел измениться и не был бы undefined, либо у вас будет NaN. – ΝNL993 Jul 27 '22 at 19:28

0 Answers0