”工欲善其事,必先利其器。“—孔子《论语.录灵公》
首页 > 编程 > 了解 JavaScript 中下划线 (`_`) 的使用

了解 JavaScript 中下划线 (`_`) 的使用

发布于2024-11-08
浏览:955

Understanding the Use of Underscore (`_`) in JavaScript

在 JavaScript 中编码时,您可能会遇到用作变量名称的下划线字符 (_),特别是在函数参数中。虽然乍一看似乎很不寻常,但由于各种原因,这种做法在开发人员中很常见。在这篇博文中,我们将探讨下划线代表什么,为什么使用它,以及它在现实示例中的显示方式,例如 coalesceES6 函数。

下划线(_)是什么意思?

在 JavaScript 中,下划线 (_) 通常用作变量的占位符,特别是当变量的标识对代码逻辑不重要时。此约定有助于表明该变量是临时的并具有特定目的,通常用于迭代或作为回调参数。

示例:coalesceES6 函数

为了说明下划线的用法,让我们看一个名为 coalesceES6 的简单函数。此函数接受多个参数并返回第一个既不为 null 也不未定义的参数。

该函数的外观如下:

const coalesceES6 = (...args) => 
  args.find(_ => ![null, undefined].includes(_));

分解:

  1. 箭头功能

    • 该函数使用箭头函数语法定义。 (...args) 允许它接受任意数量的参数,这些参数存储在 args 数组中。
  2. 查找非空值:

    • 函数的核心使用args.find()。此方法遍历 args 数组中的每个元素以查找第一个满足特定条件的元素。
    • 条件检查当前参数(由_表示)是否为数组中的[null, undefined]。
  3. 使用 _

    • 这里的下划线 (_) 代表函数迭代 args 时的每个单独参数。
    • 它用作临时占位符,表明该变量仅在 find 方法的上下文中相关。

为什么使用下划线?

  1. 表示临时变量

    • 当使用 _ 时,开发人员表示该变量除了立即使用之外并不重要。它可以帮助其他程序员理解该变量稍后不会在代码中被引用。
  2. 简洁

    • 使用 _ 这样的单个字符可以使代码更简洁、更短,特别是在函数经常内联编写的函数式编程环境中。
  3. 社区熟悉程度

    • 许多 JavaScript 库和框架使用 _ 作为标准约定。这种熟悉感使开发人员更容易阅读和理解代码。

与更具描述性的名称的比较

虽然使用 _ 很常见,但它不是唯一的选择。开发者还可以选择更具描述性的变量名来增强可读性:

const coalesceDescriptive = (...args) => 
  args.find(arg => ![null, undefined].includes(arg));

在此版本中,使用arg代替_。虽然这提高了清晰度,但函数的逻辑保持不变。使用 _ 还是描述性名称的选择通常取决于个人或团队的偏好。

结论

下划线 (_) 是 JavaScript 中的一种简单而强大的约定。它充当占位符变量,使代码更简洁,并向其他人表明该变量的身份对于整体逻辑并不重要。在像 colonesceES6 这样的函数中,使用 _ 可以让开发人员专注于功能而不是变量命名的细节。

下次您在 JavaScript 中看到下划线时,您就会知道这不仅仅是一个随机选择,而是一个深思熟虑的决定,有助于实现清晰简洁的编码实践。

版本声明 本文转载于:https://dev.to/shashankpatil15/understanding-the-use-of-underscore-in-javascript-10fk?1如有侵犯,请联系[email protected]删除
最新教程 更多>
  • eval()vs. ast.literal_eval():对于用户输入,哪个Python函数更安全?
    eval()vs. ast.literal_eval():对于用户输入,哪个Python函数更安全?
    称量()和ast.literal_eval()中的Python Security 在使用用户输入时,必须优先确保安全性。强大的Python功能Eval()通常是作为潜在解决方案而出现的,但担心其潜在风险。 This article delves into the differences betwee...
    编程 发布于2025-04-30
  • 您如何在Laravel Blade模板中定义变量?
    您如何在Laravel Blade模板中定义变量?
    在Laravel Blade模板中使用Elegance 在blade模板中如何分配变量对于存储以后使用的数据至关重要。在使用“ {{}}”分配变量的同时,它可能并不总是最优雅的解决方案。幸运的是,Blade通过@php Directive提供了更优雅的方法: $ old_section =“...
    编程 发布于2025-04-30
  • 如何从Google API中检索最新的jQuery库?
    如何从Google API中检索最新的jQuery库?
    从Google APIS 问题中提供的jQuery URL是版本1.2.6。对于检索最新版本,以前有一种使用特定版本编号的替代方法,它是使用以下语法:获取最新版本:未压缩)While these legacy URLs still remain in use, it is recommended ...
    编程 发布于2025-04-30
  • 为什么PHP的DateTime :: Modify('+1个月')会产生意外的结果?
    为什么PHP的DateTime :: Modify('+1个月')会产生意外的结果?
    使用php dateTime修改月份:发现预期的行为在使用PHP的DateTime类时,添加或减去几个月可能并不总是会产生预期的结果。正如文档所警告的那样,“当心”这些操作的“不像看起来那样直观。 ; $ date->修改('1个月'); //前进1个月 echo $ date->...
    编程 发布于2025-04-30
  • 如何在Java中正确显示“ DD/MM/YYYY HH:MM:SS.SS”格式的当前日期和时间?
    如何在Java中正确显示“ DD/MM/YYYY HH:MM:SS.SS”格式的当前日期和时间?
    如何在“ dd/mm/yyyy hh:mm:mm:ss.ss”格式“ gormat 解决方案:的,请访问量很大,并应为procectiquiestate的,并在整个代码上正确格式不多: java.text.simpledateformat; 导入java.util.calendar; 导入java...
    编程 发布于2025-04-30
  • 为什么HTML无法打印页码及解决方案
    为什么HTML无法打印页码及解决方案
    无法在html页面上打印页码? @page规则在@Media内部和外部都无济于事。 HTML:Customization:@page { margin: 10%; @top-center { font-family: sans-serif; font-weight: bo...
    编程 发布于2025-04-30
  • HTML格式标签
    HTML格式标签
    HTML 格式化元素 **HTML Formatting is a process of formatting text for better look and feel. HTML provides us ability to format text without us...
    编程 发布于2025-04-30
  • 组件驱动CSS框架:开发者的新选择
    组件驱动CSS框架:开发者的新选择
    核心要点 Web Components日益流行,对能够处理这种开发类型的CSS框架的需求也日益增长。传统的CSS框架(如Bootstrap或Foundation)由于其广泛的内置样式和代码,可能会限制开发人员使用Web Components。 组件驱动型CSS框架(如Pattern Lab、SUI...
    编程 发布于2025-04-30
  • 如何在Chrome中居中选择框文本?
    如何在Chrome中居中选择框文本?
    选择框的文本对齐:局部chrome-inly-ly-ly-lyly solument 您可能希望将文本中心集中在选择框中,以获取优化的原因或提高可访问性。但是,在CSS中的选择元素中手动添加一个文本 - 对属性可能无法正常工作。初始尝试 state)</option> < op...
    编程 发布于2025-04-30
  • 在Java中使用for-to-loop和迭代器进行收集遍历之间是否存在性能差异?
    在Java中使用for-to-loop和迭代器进行收集遍历之间是否存在性能差异?
    For Each Loop vs. Iterator: Efficiency in Collection TraversalIntroductionWhen traversing a collection in Java, the choice arises between using a for-...
    编程 发布于2025-04-30
  • 如何高效地在一个事务中插入数据到多个MySQL表?
    如何高效地在一个事务中插入数据到多个MySQL表?
    mySQL插入到多个表中,该数据可能会产生意外的结果。虽然似乎有多个查询可以解决问题,但将从用户表的自动信息ID与配置文件表的手动用户ID相关联提出了挑战。使用Transactions和last_insert_id() 插入用户(用户名,密码)值('test','test...
    编程 发布于2025-04-30
  • `ConfigurationManager.AppSettings.Set`为何不保存App.Config更改?
    `ConfigurationManager.AppSettings.Set`为何不保存App.Config更改?
    app.config值修改quandary 在提供的代码片段中,尝试修改app.config文件中的值。但是,这种修改并不像预期的那样持续。要识别此问题的来源,让我们深入研究提供的代码并探索潜在问题。代码段: lang =“ Russian”; 私有void main_formclosing(对象...
    编程 发布于2025-04-30
  • 如何避免Go语言切片时的内存泄漏?
    如何避免Go语言切片时的内存泄漏?
    ,a [j:] ...虽然通常有效,但如果使用指针,可能会导致内存泄漏。这是因为原始的备份阵列保持完整,这意味着新切片外部指针引用的任何对象仍然可能占据内存。 copy(a [i:] 对于k,n:= len(a)-j i,len(a); k
    编程 发布于2025-04-30
  • C++20 Consteval函数中模板参数能否依赖于函数参数?
    C++20 Consteval函数中模板参数能否依赖于函数参数?
    [ consteval函数和模板参数依赖于函数参数在C 17中,模板参数不能依赖一个函数参数,因为编译器仍然需要对非contexexpr futcoriations contim at contexpr function进行评估。 compile time。 C 20引入恒定函数,必须在编译时进行...
    编程 发布于2025-04-30
  • Java开发者如何保护数据库凭证免受反编译?
    Java开发者如何保护数据库凭证免受反编译?
    在java 在单独的配置文件保护数据库凭证的最有效方法中存储凭据是将它们存储在单独的配置文件中。该文件可以在运行时加载,从而使登录数据从编译的二进制文件中远离。使用prevereness class import java.util.prefs.preferences; 公共类示例{ 首选项...
    编程 发布于2025-04-30

免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。

Copyright© 2022 湘ICP备2022001581号-3