Это сделано для того, чтобы javascript код выполнился как можно позже, а страница загрузилась как можно раньше.
Т.е. сначала загружается вся страница. Затем начинает выполняться javascript, который после выполнения операции конкатенации делает document.write
. Только после document.write
- начинает выполняться код bla-bla-any-code внутри <script>.
Как по мне, то спорный способ, я бы так не делал. Это css блокирует отображение страницы, пока не загрузится, а javascript как по мне лучше всего вставлять либо в <head> либо прямо перед закрытием </body> и не использовать такие стрёмные способы. И вот доказательство:
<html>
<head>
<script type="text/javascript">
alert("first");
</script>
</head>
<body>
<div class="box"></div>
<script type="text/javascript">
document.write('<scr' + 'ipt>alert("second");</scr' + 'ipt>');
</script>
<script type="text/javascript">
alert("third");
</script>
</body>
</html>
http://jsfiddle.net/ft9e69bL/1/
При выполнение этого примера кода, javascript выполнился в порядке first->second->third, то есть эта конкатенация не отложила выполнение кода. Если alert
в примере заменитиь на console.log
, результат останется прежним.
Кроме того, в свежей версии Хрома еще и violation в консоли будет:
Violation] Avoid using document.write()
– root 11 лет назад
– anonymous 12 лет назад
– ggg 12 лет назад