JavaScript的顺序<;脚本>;在主要浏览器中不保证标记执行?
在主流浏览器中,是否不能保证以下脚本标记始终按顺序和声明顺序执行?i、 e.我是否应该假设以下代码在警报中不会总是产生x=='ab'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
<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会是下列之一:
在每个浏览器中,这些非动态添加的
script
标记的执行顺序应为纯顺序
:
摘自:
出现的JavaScript语句
在
和
标记之间
按出场顺序执行;
当一个脚本中出现多个脚本时
文件中执行脚本
它们出现的顺序
但是,一旦您:
- 通过自己的代码触发异步处理(本例中没有)
- 使用
延迟
async
或defer
属性,或者它们自己编写/添加更多脚本。必须阅读:@JonathanFingland(“代码>依赖于以前链接的文件的代码”)-src正在加载jQuery,以下脚本块依赖于它-但发现$
未定义。在脚本块代码中添加了一个setTimeout(…,0)
“around”以给jQuery加载时间-工作。所以这里发生了一些我无法预料的事情。这对于嵌套的文档来说也是如此。编写脚本,参见kangax。我今天在这方面非常失败。我的网站很好,直到我把静态放在CDN上,加载顺序不再得到保证(不知何故,我原来的静态服务器是用FIFO(先进先出)服务的)。提示:不要通过动态添加脚本标记来加载多个依赖的js文件。然后看看这些文件。谢谢大家!特别是,多个
位于bod的不同深度元素中,是顺序
a深度优先顺序
还是宽度优先顺序
?