javascript执行顺序问题

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
    <head>
        <link rel="stylesheet" href="main.css">
        <script src="A.js"></script>
        <script src="B.js"></script>
    </head>
</head>
<body>
   <script type="text/javascript">
       console.log('hhhh');
   </script> 
</body>
</html>

B.js依赖A.js, 我想问一下这里A和B一定是顺序执行的么?我开发中遇到这个问题了,B依赖A,但是B.js先执行了,所以报错了! 如果因为网络原因导致B.js先返回,这个时候B.js就一定先执行?

补充:
这里看到两个朋友都回答说一定A先执行。我这里补充一下,我这个代码是写在jsp页面中的。我的A是bootstrap-datepicker.js, B是我自己的js,然后在B中执行$('#test').datepicker({}); console中打印$.datepicker is not a function. 然后我尝试了好几种方法,最后直接把A.js写到jsp引用的common的jsp中,才正确执行。我一直认为写在前面的js先执行,这次遇到B先执行我想不明白。

阅读 5.6k
10 个回答

不是的 一定是A先执行的。

js引擎从上往下解析 不可能先执行B 。至于你的报错 那也要看报错信息是什么,贴出代码以及报错信息

js文件大小会影响加载速度,有依赖关系的话,建议使用require或者sea.js,里面可以配置加载顺序

一定是顺序执行的,如果B报错了,就检查一下A的引入路径有没有错

B可能会提前加载完成,但会阻塞。
当前面都加载完成(包括加载失败)之后再往下执行

下载可能b先下载完,但是浏览器不会先执行b 一定会等待a,除非a失败了。。。

默认情况javascript是同步加载的,javascript的加载时阻塞的,后面的元素要等待javascript加载完毕后才能进行再加载。
如果报错是$.datepicker is not a function,可能是没有引用到jquery;
如果引用到jquery了,报错应该是$("#test").datepicker is not a function,
要不然就是你写错了。。。

由于网络的原因这个并不能确保哪个先执行,这个时候可以通过事件订阅的方式解决。
比如,比如b.js依赖a.js ,那么在a.js中订阅一个事件,b.js中触发这个事件,这两者可以反过来,主要看你事件订阅与发布的机制来定。

请求是并行的。可是执行跟解析是按照顺序的

新手上路,请多包涵

可能是你的B.js中的代码是立即执行的,但是A.js中的代码是DOM加载完再执行的

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题