【问题标题】:string placeholder replacement program in javascript [duplicate]javascript中的字符串占位符替换程序[重复]
【发布时间】:2020-02-02 05:40:13
【问题描述】:
function format(template, ...values) {
    return template.replace(/{(\d+)}/g, (_,i) => values[i]);
}

上述解决方案返回一个格式化的字符串。例如format("{0}{1}{2}{1}{0}", "k", "a", "y") 返回“kayak”。

知道JS中的字符串替换功能,这里没有得到箭头功能

【问题讨论】:

  • 第一个参数只是不用了。
  • 但是 i 值是如何递增的?我的意思是我无法理解占位符如何被箭头函数的值替换
  • 第二个参数是捕获组。 {0} 将捕获 0,例如,因此传递给 format 的第二个参数将是替换
  • 我认为这被错误地标记为重复问题。
  • 正则表达式匹配结构如{0}_ 将是{0}(整个正则表达式)和i 将是0(第一个捕获组),箭头函数返回values[0] 用于第一场比赛,将 {0} 替换为 k

标签: javascript regex string arrow-functions


【解决方案1】:

_在胖箭头函数中被称为一次性变量

下划线符号 _ 是 JavaScript 中的有效标识符,在您的示例中,它被用作函数参数。

单下划线是一些 javascript 程序员用来向其他程序员指示他们应该“忽略此绑定/参数”的约定。由于 JavaScript 不进行参数计数检查,因此可以完全省略参数。

这个符号经常(再次按照惯例)与粗箭头函数一起使用,以使它们更加简洁和可读,如下所示:

const fun = _ => console.log('Hello, World!')
fun()

在这种情况下,函数不需要参数来运行,因此开发人员使用下划线作为约定来表示这一点。同样的事情可以这样写:

const fun = () => console.log('Hello, World!')
fun()

不同的是,第二个版本是一个没有参数的函数,但第一个版本有一个名为 _ 的参数被忽略。虽然它们有所不同,但第二个版本更安全,但稍微冗长一些(1 个额外字符)。

另外,考虑像

这样的情况
arr.forEach(function (_, i) {..})

其中_表示不使用第一个参数。

【讨论】:

  • 我尝试删除下划线并运行我在输出中未定义的解决方案,如果可能请分解整个解决方案
  • @BalaKrishnaKesani 这是因为在这种情况下,i 将是匹配整个正则表达式的子字符串,您应该查看String.replace 以了解如何使用函数替换。跨度>
猜你喜欢
  • 2021-09-26
  • 1970-01-01
  • 2020-12-19
  • 2012-05-11
  • 1970-01-01
  • 1970-01-01
  • 2012-07-23
  • 2019-02-16
  • 1970-01-01
相关资源
最近更新 更多