Я пытаюсь выяснить проблему с некоторым унаследованным кодом.
У меня есть HTML-страница с
<script type="text/javascript" src="file1.js" defer="defer"></script>
<script type="text/javascript" src="file2.js" defer="defer"></script>
</body>
</html>
file1.js имеет
FOO = {
init : function () {
var bar = BAR;
}
}
$(document).ready(FOO.init);
file2.js имеет
var BAR = {
}
Из-за атрибута defer у элементов можно с уверенностью предположить, что когда .ready()
вызывает FOO.init()
, этот BAR
все еще может быть неопределенным в этот момент, потому что код в file2.js
не имеет " еще не выполнено из-за отложенного выполнения?
Это соответствует ошибке, которую я пытаюсь отследить (в IE встречается только спорадически), но я действительно хочу понять , почему это происходит до того, как я работаю над решением. Я понятия не имею, почему первоначальный разработчик использовал defer
, кроме загадочной похвалы о том, что «он должен был» сделать это таким образом.