Javascript Null Coalescing (空值合并)2025 年 4 月 18 日 | 阅读 6 分钟 空值合并运算符(??)是 JavaScript 中一个简单而强大的语言新增功能,它使处理 null 和 undefined 值变得轻而易举。 无论您是否正在使用它,空值合并运算符都有助于处理配置对象、API 响应和可选参数。它能简化您的代码、减少错误并提高可维护性。它与其他“现代”JavaScript 功能(主要是可选链)的互补性,使其功能更加多样化。 语法 value1: 左侧操作数。 value2: 备用值(右侧操作数)。 如果 value1 是 null 或 undefined,运算符的计算结果为 value2。 否则,所有其他值(即使是 false、0 或 '')都会被计算为 value1。 在编程中,开发人员经常需要有意地将变量保留为 null 或 undefined。当输入是用户输入、配置设置或 API 响应,并且预期会出现缺失或未初始化的值时,尤其会发生这种情况。历史上,Javascript 开发人员曾使用逻辑或运算符(||)在我们没有得到值时提供一个备用值。然而,这通常不精确,导致意外行为和复杂的代码变通方案。 空值合并的用例设置默认值 空值合并运算符最直接的用例是为一个可能是 null 或 undefined 的变量提供一个默认值。 处理可选参数 当函数中的可选参数未被传递或被明确设置为 undefined 时,我们可以使用 ?? 来处理这种情况。 安全访问配置值 有时,配置设置没有完全定义。使用空值合并运算符,您可以简化并为这些设置提供默认值,就好像说“它是空值,或者它就是这个值!” 举个例子,考虑一个返回用户数据的用户 API。响应可能包含姓名、年龄和偏好等字段。在某个字段未提供(例如,undefined)或被有意设置为 null 的情况下,空值合并运算符为开发人员提供了一种提供有意义的默认值的方法。也就是说,开发人员可以这样做,而不会无意中覆盖有效的值,如空字符串或 0。 这使得某个功能不仅更容易编码,同时也更具可读性。另一方面,运算符的意图对于开发人员来说是立即可理解的,他们能明白为什么需要这个运算符,并能更快地在协作和维护大型代码库中工作。 空值合并的必要性在实现空值合并运算符之前,开发人员通常使用或运算符来返回一个默认值。或运算符将除了假值(falsy values)之外的所有东西都视为假:null、undefined、0、false、NaN 和 ""。当你试图将有效的假值作为假值处理时,这会导致它们被错误地覆盖。 或运算符的问题 在这里,或运算符没有将 0(一个有效的假值)视为假,并且仍然分配了备用值 10。 不幸的是,这并没有解决问题,因为有效的假值保持不变,而空值合并运算符只处理 null 和 undefined。 使用空值合并运算符 空值合并的高级功能1. 与可选链结合 在使用深度嵌套的对象时,将空值合并运算符 (??) 与可选链 (?.) 结合起来是安全的,它们创建了一种安全访问属性的方式。通过防止在访问 null 或 undefined 的属性时出错,可选链和 ?? 在目标属性本身被发现为 null 或 undefined 时提供了一个备用方案。 2. 链接多个备用值 ?? 运算符可以被链接起来以创建分层的备用方案。当可能有多个潜在的值来源时,这很有用。 3. 安全的默认赋值 在解构对象时,空值合并运算符可以与默认值结合使用,以执行合理的赋值而不会出错。 4. 复杂表达式 只要优先级正确,空值合并运算符可以与复杂表达式一起使用,并可以与 && 和 || 结合使用。 5. 函数中的动态默认值 当您希望在函数中拥有动态默认值并使用可选参数来实现时,它非常宝贵。 在 JavaScript 应用程序中的综合成果输入验证 在面向用户的应用程序中,您很可能会看到缺失或不完整的输入。空值合并运算符提供了一种简单的方法来处理这种情况,而不是使用冗长的验证逻辑。如果没有默认值,当用户输入为 null 或 undefined 时,应用程序可能会出现不可预测的行为,这可能导致糟糕的用户体验——即使您不需要编写它。 配置管理 在许多应用程序中,配置设置用于确定运行时的行为。在某些环境中,这些设置本身可能缺少一些可选参数。使用空值合并运算符,为这些参数提供合理的默认值变得非常简单,从而防止应用程序变得过于复杂。 API 集成 从本质上讲,它们经常处理外部 API 返回的值中包含不完整或缺失字段的数据。空值合并运算符使我们能够为这些字段设置有意义的默认值,以便我们的应用程序可以优雅地处理 API 响应。这可以防止来自外部源的劣质数据造成的破坏性影响,从而提高稳健性,并减少因外部源的部分错误或错误数据而导致的故障发生率。 输入验证 在面向用户的应用程序中,您很可能会看到缺失或不完整的输入。空值合并运算符提供了一种简单的方法来处理这种情况,而不是使用冗长的验证逻辑。如果没有默认值,当用户输入为 null 或 undefined 时,应用程序可能会出现不可预测的行为,这可能导致糟糕的用户体验——即使您不需要编写它。 动态数据处理 在数据驱动的应用程序中,我们倾向于处理具有部分填充字段的对象。空值合并运算符简化了为这些字段分配备用值的代码,使其比传统的数据处理逻辑更容易理解。在处理预期会出现缺失字段的动态或不断演变的数据结构时,此功能尤为重要。 空值合并运算符有助于解决这些常见问题,从而提高 JavaScript 应用程序的可读性、可维护性和可靠性,使其成为我们现代开发中必不可少的工具。 程序输出 Hello, Guest! Hello, Alice! Hi, Guest! 结论它是 JavaScript 中处理可能缺失、未定义或为空的值的一个重要而强大的功能。空值合并运算符简化了为这些字段分配备用值的代码,使其比传统的数据处理逻辑更容易理解。在处理预期会出现缺失字段的动态或不断演变的数据结构时,此功能尤为重要。 最后,空值合并运算符使绝大多数处理数据的 JavaScript 代码能够更优雅、更易于维护地处理数据缺失或未定义的情况。 |
什么是? 在 JavaScript 中,ES7 是由 ECMA International 标准化的脚本语言规范。它也被称为 ECMAScript 7 或 ECMAScript 2016,它带来了许多新功能,这些功能可以帮助开发人员创建更有效、更高效的代码……
阅读 4 分钟
JavaScript 是一种开源编程语言。它专门用于创建以 Web 为中心的应用程序。它轻量级、解释性且比其他语言快得多。这意味着 JavaScript 可用于开发设计良好的 Web 应用程序。使用...的电子邮件验证。
阅读 12 分钟
JavaScript 是最受欢迎的编程语言之一,被谷歌、微软、Meta、亚马逊等许多科技巨头公司以及其他许多大公司使用。它是网站开发的首选语言,并被认为是 Web 开发的旗舰编程语言。它验证...
阅读 6 分钟
如何在记事本中运行 JavaScript 程序 JavaScript 是一种多功能编程语言,主要用于 Web 开发,但也可用于记事本等简单程序。尽管有高级集成开发环境 (IDE) 可用,但学习基础知识……
阅读 6 分钟
2008 年,Google 开发了 V8 引擎,以提高其在线浏览器 Google Chrome 中 JavaScript 的速度。大规模项目以前被认为需要 JavaScript 速度慢且效率低下,尤其是与其他编程语言(如 Java 或 C)相比。之前...
阅读 10 分钟
在本文中,我们将了解在线 JavaScript 编译器 GDB。在线 JavaScript 编译器也称为在线代码编辑器或在线代码沙盒。它允许用户编写、运行和测试 JavaScript 代码。在线编译器易于使用……
阅读 3 分钟
什么是 JavaScript? JavaScript 是一种用于客户端和服务器端开发的脚本语言。它使开发人员能够创建交互式网页。换句话说,JavaScript 是一种基于文本的方法,允许开发人员创建动态更新的内容、控制多媒体,或者我们可以为其制作动画...
阅读 4 分钟
JavaScript 是一种通用且广泛使用的编程语言,为开发人员提供了构建动态和交互式 Web 应用程序的众多功能。其中一项功能是能够访问和操作网页的各种组件,包括其主机名。在本文中,我们将深入探讨概念...
阅读 8 分钟
JavaScript 的 TextEncoder 和 TextDecoder 函数分别用于对给定值进行编码和解码。TextEncoder 使用 JavaScript 函数将指定字符串转换为 utf-8 标准。它将字符串转换为 Uint8Array。使用 JavaScript 函数,TextDecoder 将...
阅读 6 分钟
? 简介学习 JavaScript 可以提高应用程序的功能和用户体验。在许多计算场景中,一个常见但关键的操作是将数字四舍五入到特定的小数位数。将两位小数四舍五入尤其重要,因为在金融计算、数据呈现和统计报告中,这...
阅读 3 分钟
我们请求您订阅我们的新闻通讯以获取最新更新。
我们提供所有技术(如 Java 教程、Android、Java 框架)的教程和面试问题
G-13, 2nd Floor, Sec-3, Noida, UP, 201301, India