Object foreach JavaScript

19 Apr 2025 | 阅读 21 分钟

引言:在 JavaScript 中使用 forEach() 导航对象迭代

凭借其灵活且逼真的特性,JavaScript 开发者可以开发出出色且具有交互性的 Web 应用程序。无论您是高级开发者,还是初次涉足 JavaScript,能够成功地迭代数据结构都对您至关重要。虽然 JavaScript 通过 forEach() 等方法简化了数组的导航,但对于对象的属性遍历,数组导航并非如此。在本文中,我们将深入探讨 OOP,并了解 forEach() 方法如何使过程更加简单。

本质上,JavaScript 可以被认为是一种面向对象的语言。对象是一种基本数据类型,它以键值对的形式存储数据集合,这使得它们成为许多程序中最有趣的对象。与内置的 forEach() 迭代方法不同,遍历对象的属性需要不同的方法。在这种情况下,已弃用的方法或 for...in 循环之间的区别就很明显。这些方法功能强大,但可能会写得很笨拙,并且容易出现意外行为,尤其是在对象结构嵌套或具有继承属性时。

进入 forEach() 方法。首先,forEach() 是为数组设计的。但是,现在可以使用它来执行给定函数任意多次,为每个元素执行一次。其语法的简洁性以及函数式编程风格,让您在数组操作中应接不暇。另一方面,这一面的故事是没有界限的,因为富有创意的开发者已经想出了方法,不仅在数组中使用数组的力量,而且还掌握了对象迭代。

在深入了解使用 forEach() 方法处理对象之前,让我们快速回顾一下它在数组上的基本功能。假设我们有一个表示每日温度的数字数组

使用 forEach(),我们可以轻松地遍历每个温度并执行特定操作,例如将其记录到控制台

这个非常简短的 JavaScript 片段清晰地展示了 forEach() 的强大功能。循环和索引的使用可能成为开发人员的巨大障碍。循环计数器的笨拙通过这种方法得到了解决,让开发人员可以专注于手头的任务。

在使用 forEach() 函数时,虽然简单方便,但通过其属性探索对象需要完全不同的方法。过去,开发人员使用 for-in 循环来遍历对象,枚举其属性。让我们考虑一个我们有一个表示个人资料的对象示例

使用 for...in 循环,我们可以遍历 person 对象上的每个属性:使用 for...in 循环,我们可以遍历 person 对象上的每个属性

虽然效率很高,但循环仍然存在一些明显的缺点。它们会遍历对象的所有可枚举属性,包括那些从其原型链继承的属性。如果对象所驻留的原型具有一些不需要的属性,这种行为可能会导致尴尬的局面。

除此之外,它还有一些特定的问题,包括复杂性和风格上的不完善,而 forEach() 则不存在这些问题。它们需要大量的样板代码,并且与现代 JavaScript 实践(如函数式编程)不兼容。正是因为这个原因,forEach() 才出现了。虽然它可能不直接适用于对象,但您可以通过与 Object.keys()、Object.values() 和 Object.entries() 等其他方法结合使用来利用数组的功能。这些方法作为参数传递,产生一个包含对象键、值或键值对的数组,从而使 forEach() 能够无缝使用。

此时,我们可以说,最初为数组设计的 JavaScript forEach() 方法,在附加实用方法的情况下,为对象迭代提供了广泛的设施。通过利用函数式编程原理和现代 JavaScript 的灵活性,程序员可以获得机会,使他们的代码更简洁,并为处理对象结构时的限制消失铺平道路。让我们一起探索 JavaScript forEach() 对象理论的路线图。

JavaScript 中 forEach() 的基础

JavaScript 的 forEach() 方法仍然是该语言致力于让事情尽可能顺畅和富有表现力的一个标志。自 EMC5 以来,forEach 的使用已经提供了一种简洁优雅的解决方案来迭代数组元素,而无需使用 for 和 while 循环。它完美地符合 JavaScript 中的函数式编程范式,因为它能够以多功能的方式工作,并展现数据数组的不同功能,这些功能受到开发人员的青睐。

最终,forEach() 可以被认为是函数式编程的主要核心,因为它隐藏了最复杂的细节,如循环计数器和地址,从而捕捉了数组的精髓。这种语法直截了当且易于理解,因此开发人员可以利用这个机会更好地处理他们的任务,而不是被迭代所困扰。现在,我们通过考虑一个基本示例来深入研究这个平台的基本工作原理。

考虑一个表示一组个体年龄的数字数组

使用 forEach(),我们可以轻松地遍历数组中的每个年龄并执行特定操作,例如将其记录到控制台

在这里,forEach 被使用,并且回调函数会为 ages 数组中的每个年龄执行一次。回调函数在其参数列表中首先接收当前元素,从而允许开发人员单独处理每个元素。在此场景中,我们以与之前任务相同的方式将每个年龄记录到控制台,使用模板字面量对其进行格式化。

forEach() 有许多好处,其中之一是回调函数缺乏词法作用域。与 for() 循环不同,for() 循环会为每次迭代重新创建,因此保留周围作用域,而 forEach() 则不会。这些用户可以减少代码量,从而产生可读的代码,并显著降低意外副作用的风险。

此外,ForEach() 提供了不同种类的箭头函数集成,其中之一是 ECMAScript 6 中引入的箭头函数。箭头函数为定义匿名函数提供了简洁的语法,使其成为 forEach() 的理想伴侣:箭头函数为定义匿名函数提供了简洁的语法,使其成为 forEach() 的理想伴侣

总结了上面示例的最后一行。箭头函数的强大和优雅通过 forEach() 方法的特定情况得到了证明。此语法已被这组特定的开发人员采用,无论是作为提高代码可读性的手段,还是作为针对特定编码需求的更集中的解决方案。

一方面,forEach() 方法毫无疑问有其优点。另一方面,它也有一些局限性。与可以用于提前终止循环的传统 for 循环不同,forEach() 没有 break 或 return 语句。一旦设置,它会逐个元素地遍历数组;因此,如果提前终止是一个问题,它可能并不总是最佳选择。最重要的是,foreach() 没有内置参数可以执行根据指定条件跳过或过滤项目(S)的任务。

forEach() 仍然存在一些缺点;尽管如此,它仍然是开发人员 JavaScript 工具箱中的有用工具。该语言的架构简单、可读性强且功能强大;因此,这种用于数组操作的方法不可或缺。无论是否有八度,您都可以使用简单直接的 forEach() 函数在函数中做出决定,例如响应数组元素、进行计算或更改数组等。

通过利用 JavaScript 中的 forEach() 数组方法,您可以以简单的方式快速执行计算和操作。语法附带的函数式编程范式以及功能完善的箭头函数为程序员提供了处理数据数组的完美环境。forEach 循环,同样,虽然与传统循环相比稍有限制,但由于其易用性和美观性,可称为数组操作任务的关键。

遍历 JavaScript 中的对象属性

如今的面向对象语言 JavaScript 按照其存储和操作数据的方式进行。键在两边重复;在对象这个词中,键和值将是集合,这很容易理解。在 JavaScript 与对象属性交互的过程中,许多方法各种各样,每种方法都有其优点和缺点。

传统方法:for...in 循环

这是开发人员以前用来遍历对象所有属性的方法。

语法很简单:for (let key in obj) { // 代码块。}

在循环内部,每次迭代会将给定的属性键或循环头中提到的变量赋值给呈现的值。

使用 for...in 循环的示例

考虑一个表示个人资料的对象

我们可以使用 for...in 循环来遍历 person 对象上的每个属性并访问其相应的值

此循环遍历每个属性的键/值对,并将它们推送到控制台。

for...in 循环的局限性

虽然 for...in 循环很高效,但也有缺点。

它们使用枚举方法来处理对象本身以及对象原型链中的每个可枚举属性。

如果创建的对象具有原型属性,这种行为可能会导致意外结果。

现代替代方案:Object.keys()、Object.values() 和 Object.entries():这些不同且有趣的方法。

通过使用 Object.keys()、Object.values() 和 Object.entries() 等方法,JavaScript 成功地获得了对象属性的数组。

return Object.keys(obj),这是一个对象可枚举属性名称的数组。

Object.values(obj) 生成一个对象可枚举属性值的数组。

Object.entries(obj) 返回一个对象拥有的可枚举键值对的数组。

将 Object.keys() 与 forEach() 结合使用

现在 Object.keys() 可以与 forEach() 方法结合使用,以对对象的键进行循环,然后开发人员可以对每个属性执行某些操作。

示例

这里,`Object.keys(person)` 获取一个键的数组,然后 `forEach()` 用于迭代该数组。

在回调函数内部,我们使用一个键来检索特定属性的值。

使用现代方法的优点

当前方法和实用程序(如 Object.keys())比 for...in 循环更具体、更清晰。

它们提供了一种更简单的语法,条件是只迭代对象的(可枚举)属性,而不是继承的属性。

字符串任务被设计成以现代 JavaScript 范式的方式运行,它也有助于代码的可读性。

兼容性注意事项

但是,在应用所考虑的方法时,还需要考虑兼容性方面。

一方面,Object.keys()、Object.values() 和 Object.entries() 在现代浏览器中得到了广泛支持,但另一方面,旧版浏览器可能缺少这些功能。

开发人员可以通过 polyfill 或使用 Babel 来弥合到旧环境。

最佳实践和性能

遍历对象属性时,请考虑性能影响。

当前方法将是有效且清晰的,并且不太可能产生较大的成本。

尽管如此,在所有情况下,性能差异通常非常小,并且先前技术的好处大于修复几乎无法察觉的潜在性能问题。

在 JavaScript 开发中,调用对象属性是一个非常常见的选择。

在过去的几年里,开发人员提出了新的方法,如 for...in 循环。不幸的是,它们确实存在一些局限性,特别是在继承和清晰度方面。

现代技术允许用户编写更少的代码行,拥有更多的控制权,并且易于使用,不会出现大量错误。

开发人员可以利用现代软件开发技术,这些技术使他们能够创建具有更明确代码结构的程序,并使其能够在不同环境中以可行的方式运行。

进一步探索

尝试在您的项目中使用了所有迭代技术的不同版本,以了解其最强大和最薄弱的方面。

确保您熟悉 JavaScript 语言的发展和代码编写方法,以构建高级且可读的代码。

考虑其他教程和额外资源,例如您在深入理解 JavaScript 对象迭代时将需要的文档。

在 JavaScript 中为对象引入 forEach()

作为 Web 开发中非常流行的编程语言,JavaScript 帮助开发人员使用各种工具和方法来管理数据结构。几种对象方法,如 forEach(),是为数组迭代而设计的。另一方面,访问对象属性的方法传统上有点过时。例如,使用 for..in 循环的旧方法很好,但需要处理继承的属性和冗长的代码。然而,JavaScript 的函数式编程范式引入了一种新颖的解决方案:利用 forEach() 技术来呈现对象。

对象迭代的挑战

在 JavaScript 对象中,它们只是键值存储,属性的值可以从简单的数字和字符串到对象和数组等复杂数据结构不等。

与 forEach() 等预定义迭代器不同,对象在遍历方式上有所不同,这是通过替代方法实现的,而不是直接访问其属性。

传统方法及其局限性

传统上,开发人员使用...结构来迭代数据对象属性。

虽然有效,但遍历对象的所有可枚举属性不仅包括直接从对象属性链继承的属性。

这就是它们有意干扰过程并导致生产力失误的方式,其中最常见的是产生意外结果并损害代码的清晰度,特别是在涉及嵌套对象和原型修改的情况下。

进入 forEach() - 函数式范例

JavaScript 的函数式编程提供了 forEach() 等实践,这些实践与内部 JavaScript 标准相匹配。

forEach() 最初是为数组创建的,由于没有循环计数器和索引的精神负担,它可以实现轻量级迭代。

利用 forEach() 进行对象迭代

我们的 forEach() 方法是为了处理数组而创建的,但我们将通过结合 Object.keys()、Object.values() 和 Object.entries() 等方法来使用相同的技术进行对象迭代。

实用方法是数组形式的方法,它包含了对象的所有键、值或键值对,这为 forEach() 提供了轻松合并的选项。

将 Object.keys() 与 forEach() 结合使用

Object.keys() 方法用于获取对象可枚举属性名称的数组。

开发人员可以使用 Object.keys() 和 forEach() 这两个关键函数来迭代对象的键,然后可以使用这些键来对每个属性调用特定操作。

示例:Object.keys() 与 forEach() 是语言的关键组成部分。

考虑一个表示个人资料的简单对象

我们可以迭代 person 对象的键并记录每个属性的键值对

这个例子之所以成立,是因为 Object.keys(person) 以数组的形式给了我们给定 person 对象的所有键,然后使用 forEach() 进行迭代处理。

在回调函数中,使用与属性值对应的单个键,然后将该值发送到控制台。

forEach() 用于对象的优势

forEach() 相对于 for...in 循环提供了许多强大的优势,尤其是在对象迭代方面。

这种方法提供了更具表现力和代码内部的函数能力。它还提高了可读性和可维护性。

此外,forEach() 可以递归遍历对象自身的可枚举属性,而绕过从原型链继承的属性。

兼容性和性能注意事项

虽然 forEach() 和 object.keys() 现在得到了广泛支持,但在一所有环境中 religiously 使用它们可能会有问题,因为并非所有旧浏览器都支持它们(这可能是一个问题)。

开发人员可以通过使用 Babel 和为转译而创建的工具等 polyfills 来克服兼容性问题。

在性能方面,数学库方法可能比 for...in 循环等传统方法具有更高的开销。但对于您的许多用途来说,这种差异通常微不足道。

在 JavaScript 中,forEach() 函数的出现标志着对象迭代新方法论的黎明。有了这个函数,开发人员现在可以采用更简单、更一致的代码结构,这些结构不易出错。

函数式编程技术和 forEach() 函数的现场应用,以及 Object.keys() 的实用性,可以使开发人员扩展遍历对象属性的可能性。

JavaScript 中 forEach() 用于对象的优势

JavaScript 开发人员在学习如何创建属性迭代,以及如何保持代码的可读性和优化现有代码方面,这是一个常见的问题。通过继承,Python 面向对象编程极大地增加了传统 for in 循环的挑战,但同时提供了解决方案。继承属性和词法作用域带来的限制使 for in 循环的应用复杂化。切换到 forEach() 是一种源于数组的方法,现在正被广泛用于编写对象循环。让我们深入探讨在 JavaScript 中利用 forEach() 处理对象的优势

表现力和可读性

当涉及到对象迭代时,forEach() 的表现力也很强。

forEach() 采用的函数式编程策略是关于框架的,这些框架在空间和时间方面所占用的资源很少。正因为如此,代码非常简洁、清晰,易于理解。

因此,使用 forEach() 承担了循环控制器的职责,并为每个想要将注意力集中在代码意图而不是过程机制上的开发人员提供了安全带。

与现代 JavaScript 范式保持一致

函数式语言在近期的 JS 开发中得到了巨大的发展,而 FP 的重要性日益增长。

forEach 绝对是其中一个合适的函数,它易于理解且开发完善。

习惯了现代 JavaScript 方法的开发人员倾向于认为 forEach() 对他们来说是熟悉和方便的。

增强代码可读性

forEach() 的清晰简洁的语法使我们能够轻松地阅读代码,从而提高可读性和可维护性。

与 forEach() 表达式相比,for...in 循环在这方面不如 forEach(),因为前者可能需要您添加额外的注释或解释,或者需要澄清。forEach() 方法具有更直接的含义。

借助描述性的变量名和有意义的回调函数,可以创建自文档化的代码,这些代码易于遵循,无需向他人解释。

保留词法作用域

这里的词法作用域是指函数中特定变量可见的范围,具体取决于它们在代码中的声明位置。

与为每次迭代创建新作用域的常见循环不同,forEach() 函数避免了其回调函数创建单独的词法作用域。

这种实现反过来又提高了开发人员代码的清晰度,并确保不会产生意外的副作用,因为在循环外部声明的变量在回调函数中仍然可访问。

函数式编程的好处

从某种意义上说,forEach() 体现了函数式编程的几个原则,例如不变性和关注点分离。

通过将对象迭代视为一系列向下遍历每个属性的转换,forEach() 可以训练开发人员编写分区和可组合的代码。

此方法促进了代码重用的可能性,同时也简化了测试和调试,因为每个 TBL 都可以独立证明。

与实用方法的兼容性

JavaScript 可以被认为包含用于处理对象的减少实现方法(Object.keys() 等)。

forEach() 与这种多样性设计得很好,因此您可以利用这些功能来循环遍历对象。

例如,使用 forEach() 和 Object.keys(),您可以舒适地遍历对象的键,然后对每个属性执行操作。

处理嵌套对象的清晰度

由于其清晰简洁,forEach() 方法可以轻松顺畅地处理嵌套对象,这对于使用传统方法来说可能是一个挑战。

通过迭代方法,例如链接多个 forEach() 调用或使用递归,开发人员可以可靠地了解嵌套对象结构。

这种方式的绿色或蓝色方法,可以减少认知负担,并使代码维护更容易,特别是在数据可能非常复杂且深度嵌套的大型企业应用程序中。

改进的错误处理

forEach() 提供了内置机制,可以在迭代对象时解决错误并使其更清晰。

与普通循环(在失败时可能保持沉默或经常导致意外的输出)相比,forEach() 中的回调函数可以定义错误的错误处理逻辑。

这意味着可以在其他东西损坏之前检测并补偿错误,这意味着 JavaScript 代码库在此方面变得更加稳健和无差错。

与现代开发工具的兼容性

forEach() 是近期发布的科技产品的一个 100% 兼容的解决方案,这些产品占据了许多 JavaScript 开发设备。

它直接与 Babel、TypeScript 和 ESLint 等工具接口,开发人员可以利用这些工具来利用 forEach() 功能,同时还可以获得所需的代码质量和一致性。

这种统一性确保开发人员可以掌握 forEach(),而不会对其已蓬勃发展的开发工作流程构成障碍。

社区采用和支持

forEach() 正在成为 JavaScript 社区的标准,这种方法在大量开发人员项目中迅速成为对象迭代的首选方式。

forEach() 的广泛采用使得新手程序员可以轻松获得强大的文档、教程和才华横溢的社区支持,以学习 forEach() 的语法。

JavaScript 中 forEach() 与对象结合的兼容性和浏览器支持

JavaScript 的 forEach() 方法,一种数组迭代选项,已成为开发人员工具箱中的首选解决方案,用于以清晰方便的方式遍历数据结构。通过使用 forEach() 和 Object.keys() 上的库方法,开发人员可以轻松地进行对象迭代。尽管如此,虽然将 forEach() 集成到您的代码中似乎很容易,但您还应该考虑其兼容性以及支持它的浏览器,以确保网站在各种平台上的平稳运行。

现代浏览器支持

forEach() 可以被现代 JavaScript 开发人员在 Chrome、Firefox、Safari、Edge 和 Opera 等各种 Web 浏览器中看到,因为它得到了支持和认可。

这些实用方法包括 Objects.keys()、Object.values() 和 Object.entries(),它们继承了 forEach() 与对象一起工作的能力,也得到了现代浏览器的支持。

这种便利是通过大规模兼容性实现的。因此,开发人员可以自信地在每个 Web 开发项目中使用 forEach() 进行对象迭代,而无需担心在任何这些项目中的任何意外情况。

向后兼容性和旧版浏览器

现代浏览器具有高度精炼的语法,真正支持 forEach() 方法和相关函数。然而,在一些旧浏览器中,forEach() 的兼容性并不完整。

例如,如果我们选择 Internet Explorer (IE) 9 及更早版本作为示例,在这些版本中,forEach() 对于数组和对象方法不支持。

在向后兼容性是先决条件的情况下,开发过程变得有些复杂,需要涉及替代技术或修改来实现兼容性。

旧浏览器的 Polyfills

解决旧版 Web 浏览器兼容性问题的可行解决方案是使用 polyfills,它们提供脚本,在不支持运行这些功能的嵌套环境中模仿现代功能。

相反,有几种 forEach() 的 polyfills,其中数组和对象迭代的功能被桥接到旧浏览器。

通过在 JavaScript 文件开头或 HTML 标签中的 部分运行 polyfill,开发人员无需在编写代码时进行复杂更改。

转译器和编译器

Babel 和类似的编译器也可以通过在交付之前转换代码来实现现代 JavaScript 的交付,同时保持与旧浏览器的兼容性。

Babel 可以接受依赖于 forEach() 和类似方法的代码,并将其转换为适合旧环境兼容性的版本。

它使开发人员能够编写现代、简洁的代码,并自信地将其呈现给所有浏览器。

跨环境测试

为了确保 'forEach()' 和实用方法能够正常工作,开发人员必须使用各种浏览器和设备进行广泛的测试。

例如,BrowserStack 和 Sauce Labs 等轻量级工具提供跨浏览器测试平台,用于告诉您代码在不同浏览器平台上的行为可能有所不同。

开发人员可以通过早期持续的测试和修复来减少兼容性领域的问题,以防止出现对客户造成损害的明显问题。

渐进增强和优雅降级

用户可以在最新浏览器中访问和使用网站的现代部分,并在旧操作系统上回退到标准模式或早期浏览器。

例如,优雅降级能够使代码在不支持某些功能的较弱的浏览器中仍然有效。

在将 forEach() 用于对象迭代并密切关注 HTML5/跨浏览器环境时,开发人员最终可能会提出更稳健、更可靠的可编程应用程序。

在 JavaScript 中使用 forEach() 处理对象的最佳实践和注意事项

在 JavaScript 中,当您使用 forEach() 迭代对象时,会遇到一些需要考虑的最佳实践和注意事项,以编写模块化、快速且可维护的代码。遵循这些实践,开发人员可以最大限度地发挥 forEach() 的优势并避免常见陷阱:遵循这些实践,开发人员可以最大限度地发挥 forEach() 的优势并避免常见陷阱

与实用方法结合使用

除了 Object.keys()、Object.values() 和 Object.entries() 实用方法之外,在使用 forEach() 进行对象迭代时,应将它们结合使用。

这些方法分别返回键、值数组和键值映射,forEach() 函数将轻松选择正确的组合。

确保可读性

使用有意义的变量名并发现简短的回调函数来提高代码的可读性和自动文档。

避免在回调中使用过于复杂的逻辑,并尝试使用辅助函数来拆分任务。

处理嵌套对象

通过使用递归函数或再次使用 "forEach()" 循环,可以对该数据结构进行三维遍历。

注意深度递归,这会导致程序停止或内存耗尽。

错误处理

尝试捕获调用函数中的意外问题,并分配特定操作来处理它们。

使用 try-catch 块捕获错误,并通过实现适当的优雅处理和错误消息来从错误中恢复。

避免修改迭代对象

在响应函数中更改迭代参数以使其不可变,这可能导致不均匀的结果和错误的过度增长。

是否出现更改?在这些情况下,如果您决定复制对象或处理单独的键数组,会怎样?

兼容性检查

仅在确保目标环境支持 forEach() 迭代功能和使用的实用方法(例如 Object.keys())之后,才编写基于 forEach() 的对象迭代循环。

如果浏览器没有最新的更新,请回退到 polyfills 或其他类似解决方案。

理解性能影响

然而,在大多数情况下,forEach() 是一个高效的选择。尽管如此,您应该无疑地意识到,在处理大型对象或深度嵌套结构时,它可能需要付出性能代价。

在涉及迭代的性能敏感部分,而不是依赖 forEach 方法,考虑其他迭代方法或传统的 for 循环。

利用现代 JavaScript 功能

应用 JavaScript 语言的最新升级,如箭头函数,来缩短并最终使回调函数更具可读性和可理解性是目标之一。

探索引入解构和其他新功能,例如在 ES6 及更高版本中引入的功能,以便在回调函数中编写更具可读性和易于理解的代码。

利用数组方法进行转换

在迭代时,考虑将 forEach() 与 map()、filter() 和 reduce() 等数组功能混合用于数据结构转换。

它们提供了快速、实验性的对象处理和操作方法,通常嵌入在函数式范式中。

结论

forEach() 应用于您的代码,可以帮助您在进行对象迭代时引入干净的 JavaScript 代码,使其具有可读性和表现力。应遵循最佳实践和注意事项,例如将 forEach() 方法与 Object.keys() 等实用方法结合使用,以便于理解。此外,您应该确保可读性,涵盖有效处理错误和错误,这使您能够最大限度地发挥该方法的优势。

将 forEach() 应用于对象迭代,可以受益于现代 JavaScript 模式,如函数式编程,这包括设计更具可读性、模块化且不易受攻击的代码。通过使用工具箭头、解构和其他 ES6+ 指定的语法,您可以使代码真正具有可读性和表现力。

此外,还要考虑性能问题和来自不同环境的挑战。在不同设备和浏览器上测试代码可确保您不会错过任何潜在的兼容性问题,并通过使用不同的 polyfills 作为替代方法来处理它们。

基本上,JavaScript 中用于对象的 forEach() 函数是一种简化的迭代任务方法,并提高了可读性。通过掌握这种语言及其惯例,您将获得编写精简、可靠且可读代码所需的技能,这些代码可以享受我们当代 JavaScript 功能的所有优势。