Почему метод Date.now() показывает разное время, будучи инициализированным вне функции или внутри
Почему метод Date.now(), если переменная объявлена внутри функции, показывает время примерно на 5 милисекунд позже, чем вне? Связано ли это с тем, что это задержка вызова функции после загрузки?
var nowOuter = Date.now();
var nowInner;
function draw() {
nowInner = Date.now();
alert("Внеш. время: " + nowOuter + " Внут. время: " + nowInner);
}
document.addEventListener("DOMContentLoaded", function() {
draw();
});
https://jsfiddle.net/Nata_Hamster/7jkdx5w4/
Ответы (1 шт):
Автор решения: Leonid
→ Ссылка
Вы правы, вызов draw() будет осуществлен после построения дерева DOM, к тому времени значение переменной nowOuter уже задано и остается неизменным. Легко проверить изменив код:
var nowOuter = Date.now();
var nowInner;
function draw() {
nowInner = Date.now();
console.log("Внеш. время: " + nowOuter + " Внут. время: " + nowInner);
}
document.getElementById('click').addEventListener('click', function() {
draw();
});
<button id='click'>Click</button>
А так можно узнать время на построение этого дерева (в миллисекундах с точностью до микросекунды):
let now = performance.now();
document.addEventListener('DOMContentLoaded', function() {
console.log(performance.now() - now);
});