js replace函数输入参数
测试了下replace函数的输入参数,
之前一直不了解,如果replace第二个参数为function,那么replace函数提供给function的输入参数是什么呢?
例如:
String.replace(regexp,function(?,?){})
猜想是:
function的输入参数跟exec函数返回结果想似。
先看测试代码:
<!DOCTYPE HTML> <html> <head> <title>replace.html</title> <meta http-equiv="content-type" content="text/html; charset=gb2312"> </head> <body> <script type="text/javascript"> var url = "http://www.baidu.com/abc.jsp?method=method&name=abc&age=12"; //第一参数为字符串 console.group("字符串"); var newUrl1 = url.replace("www.baidu.com",function(){ console.log("replace输入参数:%o",arguments); var val = /www.baidu.com/.exec(url); console.log("exec输出参数:%o",val); console.assert(arguments[0] === val[0]); console.assert(arguments[1] === val["index"]); console.assert(arguments[2] === val["input"]); return "123"; }); console.log("replace返回字符串:"+newUrl1); console.groupEnd("字符串"); //第一参数为正则表达式 console.group("正则表达式"); var regexp_global = /[?&](\w+)=([^&]*)/g; var count = 0; var newUrl2 = url.replace(regexp_global,function(){ console.log("第"+(count++)+"次运行"); console.log("replace输入参数:%o",arguments); var val = regexp_global.exec(url); console.log("exec输出参数:%o",val); console.assert(arguments[0] === val[0]); console.assert(arguments[1] === val[1]); console.assert(arguments[2] === val[2]); console.assert(arguments[3] === val["index"]); console.assert(arguments[4] === val["input"]); return count; }); console.log("replace返回字符串:"+newUrl2); console.groupEnd("正则表达式"); </script> </body> </html>
firefox下执行结果:
测试代码的断言都通过:
1、显然replace第二个参数function的输入参数跟第一参数.exec(url)返回的信息一致。
2、假如第一个参数不是正则表达式,function的输入参数依然为/第一参数/.exec(url)返回结果。
相关推荐
满地星辰 2020-09-16
有梦就能实现 2020-06-05
gcgl000hugang 2020-02-10
hellobabygogo 2020-03-06
wbingyang 2020-02-16
一对儿程序猿 2019-12-22
宿舍 2019-12-11
liangkaiping0 2011-09-23
niuyongaiai 2013-06-09
drise 2012-05-29
不懂 2019-06-28
shqhope 2020-06-23
WebVincent 2020-06-16
lynjay 2020-06-14
ajaxtony 2020-06-11
zhendeshifeng 2020-05-27
Yasin 2020-05-05
Darklovy 2020-04-16