alert与document都存在,为什么alert弹框先出来然后再显示document
在浏览器中,JavaScript代码实际上是在单线程中运行的,这意味着代码的执行是按照一定的顺序进行的,不会产生并发执行。当JS代码执行到alert弹框时,JS解释器将阻塞进一步执行直到用户关闭弹窗。因此,alert弹框的出现会打断JS代码的执行,直接将alert窗口呈现给用户。然后JS代码继续执行,直到document对象被完全加载和解析后再显示在页面上。因此,尽管alert语句在document语句之前执行,但在alert弹框被关闭之前,浏览器不会继续执行后续代码,导致document对象延迟出现。
在 Javascript 中,alert() 函数和 document.write() 函数都可以用于输出信息到网页中,但它们的输出方式不同。
alert() 函数是浏览器提供的原生 JavaScript 弹窗函数,当该函数被调用时,它会阻塞浏览器中其他 Javascript 代码的执行,直到用户关闭弹窗或者弹窗内的信息全部加载完毕后才能继续执行后续代码。因此,如果只要 alert() 函数被调用,则 alert() 弹窗会优先于其他 JavaScript 代码显示,即使其他 JavaScript 代码在 alert() 函数之前被加载和执行。
而 document.write() 函数则是在 HTML 文档中动态输出内容,它会以流的方式在页面中追加 HTML 元素,而不像 alert() 函数那样会阻塞浏览器中的其他 JavaScript 代码。因此,当 document.write() 和 alert() 函数同时存在时,JavaScript 代码会首先执行 alert() 弹窗内的逻辑,直到用户关闭弹窗后,才会执行 document.write() 函数。也就是说,当程序运行到时,既执行弹窗又要执行 document.write(),JavaScript 的执行顺序是首先执行 alert() ,满足了一个前件,之后才会执行 document.write() 完成另一个前件的输出。所以,alert() 函数先于 document.write() 函数执行完毕。