kvizor34,
На самом деле алерт выполняется позже, но он блокирует js. Как следствие, приостанавливается весь event loop, а значит, не происходит перерисовка (она делается не сразу, а отдельным таском в событийном цикле). А так, в DOM-дереве элемент "p" уже есть.
http://jsfiddle.net/alexandroppolus/o34p6gub/ - запусти эту ссылку с открытой консолью. По крайней мере на макбуке в консоли пишется число элементов "p", до закрытия алерта.
Сообщение от Dilettante_Pro
|
<body>
</body>
<script>
var elem = document.createElement('p');
elem.textContent = 'textContent';
document.body.appendChild(elem);
setTimeout(function() {
alert('1');
},100);
</script>
|
вот здесь алерт вызывается в отдельном таске, уже после перерисовки, и элемент виден.
А если в этом коде заменить "setTimeout" на "Promise.resolve().then", то элемент опять потеряется, потому что алерт будет вызван хоть и асинхронно, но наиболее приоритетно (в микротаске), т.е. опять же перед отрисовкой.