首页 新闻 会员 周边

请教js中的arguments问题

0
悬赏园豆:20 [已解决问题] 解决于 2012-02-18 15:30

代码如下:

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"],请能给我解释一下哈?

artwl的主页 artwl | 专家六级 | 园豆:16736
提问于:2012-02-18 13:47
< >
分享
最佳答案
1

这个跟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/*...*/){ ... })

具体看一下:https://developer.mozilla.org/en/JavaScript/Reference/Global_Objects/String/replace#Example:_Defining_the_regular_expression_in_replace

里面说的很详细的

收获园豆:20
_A_A | 小虾三级 |园豆:1139 | 2012-02-18 15:20

谢谢,终于明白了,之前还以为是agruments的问题呢

artwl | 园豆:16736 (专家六级) | 2012-02-18 15:30
其他回答(1)
0

在IE9的运行结果是:

LOG: [object Arguments] 
LOG: 3
LOG: aundefinedb

推荐一篇文章:JavaScript arguments Weirdness!

dudu | 园豆:31007 (高人七级) | 2012-02-18 14:30

原来不是arguments的问题,是对JS的string.replace(RegExp, callbackFunction)方法不了解

支持(0) 反对(0) artwl | 园豆:16736 (专家六级) | 2012-02-20 14:43
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册