我正在阅读Douglas Crockford的 Good Parts ,但我无法理解这段代码:
public static bool IsDebug(this HtmlHelper htmlHelper)
{
#if DEBUG
return true;
#else
return false;
#endif
}
Then used it in my views like so:
<section id="sidebar">
@Html.Partial("_Connect")
@if (!Html.IsDebug())
{
@Html.Partial("_Ads")
}
<hr />
@RenderSection("Sidebar", required: false)
</section>
我所看到的只是使用带有一个参数的函数的return this.replace(/&([^&;]+);/g,
function(a, b) {
var r = entity[b];
return typeof r === 'string' ? r : a;
}
);
。当有两个参数时会发生什么,这两个参数来自哪里?
答案 0 :(得分:0)
在replace
中你可以specify a function as a parameter。
该函数的参数是:
match, submatch1, submatch2, ..., offset, string
其中
match
是整场比赛submatch1, submatch2, ...
是与各个带括号的捕获组匹配的字符串offset
是匹配字符串在整个字符串中开始的位置string
是正在检查的整个字符串当然,函数的参数数量取决于正则表达式中的捕获组数量。
在您的示例中,有一个组,因此该函数最多可以包含4个参数。
myString = "a&b;c a&&c;; ab;&;c";
myString = myString.replace(/&([^&;]+);/g,
function(param0,param1,param2,param3) {
document.write("param0 = " + param0 + " (match)<br>");
document.write("param1 = " + param1 + " (first submatch)<br>");
document.write("param2 = " + param2 + " (offset)<br>");
document.write("param3 = " + param3 + " (whole string)<br>");
document.write("<br>");
return "[" + param0 + "]";
}
);
document.write(myString);