JS加载顺序

<script type="text/javascript" src="a.js"></script>
<script type="text/javascript" src="b.js"></script>

先加载执行a.js,完毕后再加载执行b.js。

<script type="text/javascript">
    document.write('<script type="text\/javascript" src="a.js"><\/script>');
    document.write('<script type="text\/javascript" src="b.js"><\/script>');
</script>

先执行a.js,完毕后再执行b.js。

<script type="text/javascript">
    document.write('<script type="text\/javascript" src="a.js"><\/script>');
    var sc=document.createElement("script");
    sc.setAttribute("src","b.js");
    document.getElementsByTagName("head")[0].appendChild(sc);
</script>

这就不可以确定谁先执行了,因为通过创建script标签引入的JS,是谁先加载完毕谁先执行,与创建顺序无关。

<script type="text/javascript">
    var js = document.createElement('script');
    js.setAttribute('type', 'text/javascript');
    js.setAttribute('async', true);		//true:按照加载顺序;false:按照创建顺序
    js.setAttribute('src', url);
    document.getElementsByTagName('head')[0].appendChild(js);
</script>

对于创建script标签引入JS来讲,在某些高级浏览器中有async属性用于控制是按照加载完毕的顺序执行,还是按照创建顺序执行。

原文地址:https://www.cnblogs.com/rainman/p/1956294.html