简单`replace()`的第二个参数存在问题

Problems with second argument of simple `replace()`

本文关键字:参数 存在 问题 第二个 replace 简单      更新时间:2023-09-26

我不明白,为什么这段代码不能正常工作?

"a-b".replace(/-('w)/g, p1 => p1.toUpperCase()); // "a-B", instead of "aB"

它必须是在camelBase上交换CSS连字符语法的最简单的解决方案。

(/-('w)/g).exec("a-b")
// [ "-b", "b" ]

因此,"b"是传递给replace回调的第二个参数,第一个参数是整个匹配。

"a-b".replace(/-('w)/g, (p1, p2) => p2.toUpperCase())
// "aB"

EDIT这样写会更清楚:

"a-b".replace(/-('w)/g, (match, p1) => p1.toUpperCase())
// "aB"