JavaScript - 了解变量在作为参数传递的函数中的作用

时间:2014-03-06 13:18:35

标签: javascript regex

我正在尝试使用正则表达式,特别是我要随机播放字符串的中间内容。我找到了一个符合我需求的例子Here,我正在研究的答案是Brian Nickel的答案。

这是Brian Nickel在问题中提出的代码:

myStr.replace(/\b([a-z])([a-z]+)([a-z])\b/ig, function(str, first, middle, last) {
return first +
       middle.split('').sort(function(){return Math.random()-0.5}).join('') + 
       last;
});

我是JavaScript和RegEx的初学者,我在这里看到一个函数作为参数传递,但我不明白为什么有四个参数,特别是我不理解第一个参数str为什么如果我删除它,功能不再正常工作。

我现在这是一个愚蠢的问题,但我没有在网上找到我想要的东西,或者我不知道如何正确搜索。提前致谢

1 个答案:

答案 0 :(得分:2)

当使用RegExp替换时,该函数用作回调接收1 + n个参数,其中n是括号内的匹配。

总是按顺序排列:

  1. 完整匹配的字符串。
  2. 第一个括号。
  3. 第二个括号。
  4. 继续......
  5. 如果删除str,参数first将成为匹配的字符串。所以即使你不使用这个论点,你也需要它!