Заказ JavaScript <script> Выполнение тегов не гарантировано в основных браузерах?
Правда ли, что в основных браузерах нет гарантий, что следующие теги script всегда будут выполняться как последовательно, так и в порядке объявления? т.е. следует ли предположить, что следующий код не всегда будет давать x == 'ab' в предупреждении?
<head>
<script type="text/javascript">
//tag A
var x = x || ''; x += 'a';
</script>
<script type="text/javascript">
//tag B
var x = x || ''; x += 'b';
</script>
</head>
<body>
<script type="text/javascript">
alert('x='+x);
<script>
</body>
... и возможно, что x вместо этого будет одним из следующих:
- 'ba' - если тег B выполняется до A
- 'a' или 'b' - условие гонки, в котором A и B выполняются параллельно (хотя кажется, что этот поток четко говорит о том, что браузеры выделяют только один поток JS)
Ответы
Ответ 1
Порядок выполнения этих нединамически добавленных тегов script
должен быть чисто sequentially
в каждом браузере:
Отрывок из эта ссылка:
Операторы JavaScript, которые появляются между тегами <script>
и </script>
выполняются в порядке появления; когда более одного script появляется в файла, скрипты выполняются в порядок, в котором они появляются.
Однако все может измениться, как только вы: