按标题!
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
承诺得到解决,代码将立即执行。