在这种情况下,forEach 循环到底是如何工作的?

How exactly is a forEach loop working in this scenario?

const navLink = document.querySelectorAll(".nav-link");
navLink.forEach((link) =>
  link.addEventListener("click", () => {
    ul.classList.remove("show");
  })
);

我试图理解这种情况下 forEach 背后的逻辑,我是 javascript 和一般编程的新手,能够将我想要的内容转化为编程是一个挑战语言。

我阅读了有关 forEach 语法的不同帖子,但其中确实有很多技术性内容,我无法完全理解它们的含义。

A forEach 有点像它说的那样。它遍历数组中的每个元素。在您的代码中,所有 navLinks 都被抓取并存储到 const navLink 中并循环。之后,将 click event 添加到它们中的每一个。

只要触发此点击事件,此点击事件中的函数就会从 ul 中删除 show class。只要单击带有 class nav-link 的元素。

在 Web 开发方面,MDN 既对初学者友好又全面terms/concepts。在你的情况下:Array/forEach.


为了准确回答您的问题,所提供的 forEach 函数将为 运行 每个元素一次 DOM 中 nav-link 的 class在执行脚本时,将为每个元素添加一个 click 事件侦听器。

事件侦听器(单击其中一个元素时绑定到 运行 的函数)由 arrow function 组成。该函数将尝试从先前声明的名为 ul 的 variable/constant 引用的 HTMLElement 中删除 class show,该元素在您目前显示的代码中不存在。

如果在单击 .nav-linkul 未引用 HTMLElement,您将在控制台中看到一个错误,抱怨 ul 没有 属性 调用 classList.

如果存在 ul 并引用 HTMLElement,该函数将从该元素中删除 class show,前提是该元素具有 class。否则它什么都不做(没有任何error/warning)。

forEach 函数遍历 HTML 个元素或数组条目的列表。

在这种情况下,Document#querySelectorAll 可以 return 多个条目,因此您可以 运行 每个条目使用相同的代码。