gpt4 book ai didi

javascript - 当函数作为第二个参数提供时,JavaScript 中的替换函数不一致

转载 作者:行者123 更新时间:2023-12-02 16:54:25 25 4
gpt4 key购买 nike

function function1(format) {
var regexp = /[<>]/g;
//Here the parameters are matched string,
//the position and the original text
var str = format.replace(regexp,function(match,position,originalText){
return match;
});
return str;
}

function function2(format) {
var regexp = /:(\w+)/g;
//Here the parameters are matched string,
//something like stripped string, and the position
var str = format.replace(regexp,function(match,stripped,position){
return match;
});
return str;
}

console.log(function1('<hello>'));
console.log(function2(':url :method'));

我从#Professional JavaScript for Web Developers#获得了第一个函数,从#NodeJS in Action#获得了第二个函数。可以看到replace的回调函数并不一致。为什么?

最佳答案

function2 中的回调可以使用第四个参数来编写,以便与示例中的第一个回调显得不那么困惑并且更加一致:

function function2(format) {
var regexp = /:(\w+)/g;
var str = format.replace(regexp,function(match,submatch,position,originalText){
return match;
});
return str;
}

看看replace中的回调怎么可以是defined :它接受多个参数>= 3。仅当您的正则表达式包含子匹配时才使用可选参数,并且它们对应于 nth 个带括号的子匹配字符串:

function(match, [p1, p2, ...], offset, string) { ... }

我猜,听起来令人困惑的是它们被放置在中间。另请注意,如果第一个参数中的正则表达式是全局的(在您的示例中是这样),则对于要替换的每个完整匹配项,回调函数将被调用多次。

关于javascript - 当函数作为第二个参数提供时,JavaScript 中的替换函数不一致,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26295274/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com