Подтвердить что ты не робот

Заказ 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)
4b9b3361

Ответ 1

Порядок выполнения этих нединамически добавленных тегов script должен быть чисто sequentially в каждом браузере:

Отрывок из эта ссылка:

Операторы JavaScript, которые появляются между тегами <script> и </script>выполняются в порядке появления; когда более одного script появляется в файла, скрипты выполняются в порядок, в котором они появляются.

Однако все может измениться, как только вы: