Does changing window.location stop execution of Javascript?

在前端开发中,常常会需要用到修改 window.location 的场景,例如页面跳转、在当前页面中打开新窗口等。但是,在这些场景下,我们可能会有一个疑问:改变 window.location 是否会停止 Javascript 的执行?

短答案

改变 window.location 不会停止 Javascript 的执行。

长答案

当我们改变 window.location 时,浏览器会开始加载新的文档并将其呈现给用户。在此期间,Javascript 引擎仍然在运行,但它已经停止了处理原始文档中的代码。

一旦新的文档加载完成并准备好显示,浏览器会将其呈现给用户,同时重新启动 Javascript 引擎来处理新的文档中的代码。

如果 Javascript 代码中存在异步操作,例如 setTimeout()setInterval(),则这些操作仍将继续在后台运行,直到达到其指定的时间或条件。

因此,虽然改变 window.location 可能会导致当前文档中的 Javascript 代码停止执行,但它不会阻止其他异步操作的运行,也不会影响新文档中的 Javascript 代码的执行。

示例代码

-- ---------------------------
-------- ----------------------- ------ ------- -
  --- ---- - -------------------- - ------ - --
  --- --- - --------------------- - ------- - --
  ---------------- --- -------- - ----- - ---------- - ------ - -------- - ---- - ------- - -----
-

-- ------------------------------
-------- ---------------------- -
  --- --------- - -----------------
  ---------------- - ---------- -
    ---------------- -------- ----------
  --
-

-- -----------------
--------------------- -
  -------------------- - --------------------------
-- ------

结论

改变 window.location 不会停止 Javascript 的执行,但可能导致当前文档中的代码停止执行。在编写代码时,请注意处理异步操作,并确保您的代码在适当的时间点执行。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/28751