屹砾

屹砾技术博客,记录生活点滴。
Email/QQ/Skype/MSN/GTalk: eli.wuhan@gmail.com

留言簿

积分与排名

ELi - 屹砾网络

JavaSE & JavaEE

JavaTesting

Linux & Unix

OpenSource

收藏链接

时事点评

阅读排行榜

评论排行榜

[求助]JS数组与函数的疑惑?

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 TRANSITIONAL//EN">
<html>
<head>
<title>JS数组</title>
</head>
<body>
<href="http://eli.blogjava.net">屹砾</a>
<script type="text/javascript">
    
var arr=new Array();
    arr[
"id"]="HTTP://ELI.BLOGJAVA.NET/";
    
var str="{id}";
    
function replace(str, arr){
        
var reg=/\{(\w+)\}/g;
        
return str.replace(reg, function(a, b){return arr[b]});
    }

    alert(replace(str, arr));
</script>
</body>
</html>
这段代码中,有一个疑问:匿名函数的参数是从哪里获得的?
从执行结果中知道:
a=\{(\w+)\}
b=(\w+)
在执行函数时,会把str中的{id}替换成arr["id"]的值。
参数值就是这样对应的,但是为什么会是这样的,不明白?
有朋友能解答一下吗?

posted on 2008-06-27 15:26 屹砾 阅读(1095) 评论(5)  编辑  收藏 所属分类: Html / JS / PHP

评论

# re: [求助]JS数组与函数的疑惑? 2008-06-27 16:11 haix

function(a, b)

就是这个str, arr


  回复  更多评论   

# re: [求助]JS数组与函数的疑惑? 2008-06-27 16:27 屹砾

@haix
a, b 的值是正则表达式的值,
a=\{(\w+)\}
b=(\w+)
但是不知道为什么这里的a, b 就代表正则表达式的这两个值呢?
a是\{(\w+)\}匹配的值
b是(\w+)匹配的值
  回复  更多评论   

# re: [求助]JS数组与函数的疑惑? 2008-06-28 01:32 YYX

因为这个函数是回调函数- -!
google了解下好了,啥是回调函数  回复  更多评论   

# re: [求助]JS数组与函数的疑惑? 2008-06-29 23:37 pentiumao

ECMAScript v3 specifies that the replacement argument to replace( ) may be a function instead of a string. In this case, the function is invoked for each match, and the string it returns is used as the replacement text. The first argument to the function is the string that matches the pattern. The next arguments are the strings that match any parenthesized subexpressions within the pattern; there may be zero or more of these arguments. The next argument is an integer that specifies the position within string at which the match occurred, and the final argument to the replacement function is string itself.
试图帮你找了一下答案,正如上文:在ECMAScript语言说明中表示,replace()方法中的第二个参数(替换参数)可以用一个函数代替字符串,正如楼主所用的这样。在这种情况下,函数会被每个匹配调用,并且返回的字符串就是使用了替换文的。第一个参数就是符合整个正则表达的字符串,接下来的参数是正则中使用括号的子表达式,当然可能会有很多。接下来的参数就是一个表明了在原字符串中正则匹配发生的位置的整数,这个函数的最后一个参数则是被替换的字符串本身。回头看看楼主的问题,就不再是问题了吧,可以试着再多加几个参数,输出看看,是否符合上面的解释,答案是肯定的。:)另外还想说两句,知之为知之,不知为不知,是知也。  回复  更多评论   

# re: [求助]JS数组与函数的疑惑? 2008-06-30 14:01 屹砾

@pentiumao
很清晰,很透彻,谢谢!

知之为知之,不知为不知,是知也。
知道就是知道,不知道就是不知道,这才是智慧(睿智)的。  回复  更多评论   


标题  
姓名  
主页
验证码 *  
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
 
 
相关链接:
网站导航: