JS newb在这里被交给一个项目接管。我有一种情况,我能够工作(并让我永远这样做),但我不理解它背后的JS内部。有人能说清楚这个吗?
我有一个JS文件,在js文件中有两种不同类型的功能块,我将其称为last.js b / c它是列出的最后一个文件:
(function ($) {
...
}(jQuery));
$(function () {
...
});
这个JS文件是我页面上引用的最后一个文件,我认为它将是页面执行时调用/加载的最后一个文件。但事实并非如此。首先调用立即函数(1)。接下来,加载并执行jqueryvalidation.js文件。最后,调用last.js中的jQuery ready()函数。
所以这有效地在我的其他js库之前运行立即函数,然后它按顺序加载/运行其他js文件,最后它返回到我的last.js文件并完成它。如何在我的jqueryvalidation.js文件之前调用列表中的最后一个文件?并且立即函数是通过jQuery传递的,因此jQuery必须已经加载并且页面应该在那时准备好。
让我使用jqueryvalidation.js我必须将我的自定义验证代码放在即时窗口中。如果我把它放在jQuery ready函数中,它会在验证代码解析页面后调用,并且不会执行任何操作。
为什么同一个js文件中的这两个函数的执行顺序完全不同?
答案 0 :(得分:0)
$(function(){})
是$(document).ready(function(){})
的简写,这意味着在文档加载之前不会执行。
所以,这里发生的是你的代码正在运行,当它到达$(function(){})
时,它会向事件队列添加一个函数,然后运行其余的代码。
然后转到下一个<script>
标签,依此类推,直到它被解析为页面。一旦DOM准备就绪,那么你的函数就会运行。