jQuery ready()之后的代码是否保证在ready函数之前运行



按标题!

ready()指定它在DOM初始化后加载,并准备好执行JS。然而,我不确定这是如何与JS本身交互的!

如果我有一些通用格式的JavaScript:

let functocall = () => {
alert("Bad ending!");
};
// ... 
$(document).ready(() => {
functocall();
});
// ...
functocall = () => {
console.log("Safe!");
};

(注意JS是通过头中的<script ... defer>加载的(

在本例中,是否可能调用文档的就绪函数并导致调用alert()?在我尝试过的例子和我实际运行的代码中,它从未出现过,但我不确定是否存在由于时间安排而出现的边缘情况。

由于以下限制,我更喜欢这种方式:

  • functocall不能用其他值初始化
  • 位于更新之上的ready()调用用于代码组织目的(即,较低部分是一个长的代码块,在ready()之上会很混乱(
  • 这个JavaScript文件是用defer加载的,以允许首先加载库

我想我可以把ready()放进一个函数中,然后调用它并传入函数,但我个人认为这样看起来会有点糟糕,所以我想看看这是否可行。

否。我们不知道整个代码是什么时候执行的。它可以在文档准备好后加载,因此ready承诺得到解决,代码将立即执行。

最新更新