<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
</head>
<body>
abc
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.1/jquery.min.js"></script>
<script src="Scripts/first.js"></script>
<script src="Scripts/second.js"></script>
</body>
</html>
//first.js
$(document).ready(function () {
alert(first.firstChild.firstGrandChild);
})
//second.js
var first = {
firstChild: {
firstGrandChild: false
}
}
我在这里简化了问题。我们有html页面,引用了两个js-first和second。所以我假设浏览器首先渲染html,停止下载第一个js,然后下载第二个js。
然后执行第一个js的文件就绪,这将获得第二个js的first.firstChild.firstChildChild。
我几乎没有问题: 什么是html执行的执行顺序,下载js,文件准备执行的拳头js,文件准备执行第二个js(如果它已准备好doc)?
现在我能够从第一个js访问这些对象,但是在我的生产应用程序中非常类似的场景中,我偶尔会定义这些对象。可能的原因是什么?
如果我有循环依赖b / w第一和第二js并且我希望事情顺利运作,我该怎么办? (例如拳头js从文件准备好调用第二个js方法,也从外部doc准备好反之亦然)