JavaScript的顺序<;脚本>;在主要浏览器中不保证标记执行?

JavaScript的顺序<;脚本>;在主要浏览器中不保证标记执行?,javascript,browser,Javascript,Browser,在主流浏览器中,是否不能保证以下脚本标记始终按顺序和声明顺序执行?i、 e.我是否应该假设以下代码在警报中不会总是产生x=='ab' <head> <script type="text/javascript"> //tag A var x = x || ''; x += 'a'; </script> <script type="text/javascript"> //tag B

在主流浏览器中,是否不能保证以下脚本标记始终按顺序和声明顺序执行?i、 e.我是否应该假设以下代码在警报中不会总是产生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>

//标记A
var x=x | |'';x+=‘a’;
//标签B
var x=x | |'';x+=‘b’;
警报('x='+x);
。。。有可能x会是下列之一:

  • “ba”-如果标记B在A之前执行
  • “a”或“b”-a和b并行执行的竞态条件(尽管看起来像线程明确表示浏览器只分配一个JS线程)

  • 在每个浏览器中,这些非动态添加的
    script
    标记的执行顺序应为纯
    顺序

    摘自:

    出现的JavaScript语句 在
    标记之间 按出场顺序执行; 当一个脚本中出现多个脚本时 文件中执行脚本 它们出现的顺序

    但是,一旦您:

    • 通过自己的代码触发异步处理(本例中没有)
    • 使用
      延迟

    我知道这是链接js src文件的问题,但不是问题中定义的脚本块的问题。e、 g.依赖以前链接的文件的代码将失败10次中的9次(缓存的js文件是10次中的1次),浏览器应该以顺序和顺序执行这些脚本。您的经验是否与此相反?@JonathanFingland:链接的JS文件也没有问题,除非它们使用
    async
    defer
    属性,或者它们自己编写/添加更多脚本。必须阅读:@JonathanFingland(“代码>依赖于以前链接的文件的代码”)-src正在加载jQuery,以下脚本块依赖于它-但发现
    $
    未定义。在脚本块代码中添加了一个
    setTimeout(…,0)
    “around”以给jQuery加载时间-工作。所以这里发生了一些我无法预料的事情。这对于嵌套的
    文档来说也是如此。编写
    脚本,参见kangax。我今天在这方面非常失败。我的网站很好,直到我把静态放在CDN上,加载顺序不再得到保证(不知何故,我原来的静态服务器是用FIFO(先进先出)服务的)。提示:不要通过动态添加脚本标记来加载多个依赖的js文件。然后看看这些文件。谢谢大家!特别是,多个
    位于bod的不同深度元素中,是
    顺序
    a
    深度优先顺序
    还是
    宽度优先顺序