在工程中添加了一些js文件,这些js文件都是一个立即执行的函数,想问下,在网页加载的时候,是把所有的js文件加载完 再执行js函数 还是在加载该js文件的时候就会执行?
好像script标签有个属性可以改变运行的先后(html5),你去搜搜
首先,这取决于你script
标签的引入模式
<script src="script.js"></script>
遇到一般的script
标签,进行同步的加载和执行 —— 阻塞DOMTree
的加载,按照文档顺序,加载完毕后执行,直到脚本执行完毕,随后继续执行DOMTree
的加载
<script async src="script.js"></script>
遇到async
的script
标签,进行异步并行的加载和执行 —— 不阻塞DOMTree
的加载,且一旦加载完毕就执行,无论script
标签的顺序,不允许使用document.write()
<script defer src="script.js"></script>
遇到defer
的script
标签,script
立刻并行异步地下载,在DOMTREE
渲染完成之后,DOMContentLoaded
之前开始按照引入顺序依次执行。
加载js文件的时候就会去执行,举个例子:如果你的js代码中有用到jquery,那么jquery.js必须在你的js代码前面引入。
<script type="text/javascript">
alert("这个是demo.html");
</script>
<script type="text/javascript" src="demo.js"></script>
<script type="text/javascript">
alert("这个是demo.html2");
</script>
demo.js:
alert("这个是demo.js");
这样的结构在打开页面时,是按照前后顺序对立即执行的函数进行执行!
因为js是页面内逐行去执行的,立即执行的函数在不受上下文影响的时候是按照先后顺序执行的!
ps:如有错误,请拍砖~