将参数传递给下一个参数时,您将其称为什么?

时间:2012-12-05 15:08:31

标签: c# javascript

我注意到很多代码都是人们做的事情:

myClass.someMethod(something here, $1);

1美元从“这里有什么”中获取价值?

这是什么?我似乎无法在任何地方找到它?但是这个步骤,在正则表达式的情况下使用了很多...

2 个答案:

答案 0 :(得分:5)

您经常会在正则表达式中看到这一点,其中$1表示您正在将捕获组转移到新值中。

例如,假设我们正在为我们的网站构建推文解析器。我们想在推文中找到@引用,并将它们转换为指向这些特定帐户的链接:

// Our Tweet
$t = "I am @jonathansampson, and I work with @appendTo.";

// Find every occurence of @something, capture 'something'
echo preg_replace("/@([a-z]+)/i", "<a href='http://twitter.com/$1'>$0</a>", $t);

请注意,我们匹配@something的每一个匹配项,但我们将()中的用户名部分包装起来,以便我们可以在替换文本中单独处理它。整个模式由$0表示,它将整个值从@保存到用户名中的最后一个字符。

JavaScript也是如此:

var tweet = "I am @jonathansampson, and I work with @appendTo.",
    patrn = /@([a-z]+)/gi,
    links = tweet.replace(patrn, "<a href='http://twitter.com/$1'>$&</a>");

变量links现在包含值:

console.log(links);
/*
    "I am <a href='http://twitter.com/jonathansampson'>@jonathansampson</a>, and 
     I work with <a href='http://twitter.com/appendTo'>@appendTo</a>."
*/

您可能会注意到我在JavaScript中使用$&来获取整个匹配模式,而在PHP中使用$0 - 我们必须处理这些生活中的差异。我道歉;)

答案 1 :(得分:0)

如果你在谈论javascript,可以在声明中使用$,所以它可能是一些东西。

例如,您可以将变量声明为

var $1 = 1;

然后在通话中使用

myClass.someMethod(something here, $1);

同样可以是对函数的引用。