代码如下:
var str="a1b";
var reg=new RegExp("\\d","gim");
function Test(){
console.log(arguments);
console.log(arguments.length);
}
console.log(str.replace(reg,Test));
输出的结果如图所示:
这里arguments的值为什么会是["1",1,"a1b"],请能给我解释一下哈?
这个跟arguments参数无关
是跟string.replace(RegExp, callbackFunction),传递给这个callbackFunction的参数有关
基本上都是:
String.replace(RegExp, function($0,$1...$99/*如果有的话*/, index, s/*当前字符串*/) {})
比如你这个就是(match是匹配的字符串):
"a1b".replace(/\d/, function(match, index, s/*a1b*/) {
//...
});
再比如这个:
"Hey Tricia, how's it going?".replace(new RegExp( "\\b(\\w+)'(s)\\b", "gi" ),function( $0, $1, $2/*...*/){ ... })
里面说的很详细的
谢谢,终于明白了,之前还以为是agruments的问题呢
原来不是arguments的问题,是对JS的string.replace(RegExp, callbackFunction)方法不了解