使用javascript内联函数

时间:2015-08-05 10:23:46

标签: javascript

我无法理解function(match, p1, p2)的工作方式。

匹配参数有什么用?如果我不写匹配参数,代码会中断。

function incrementString(input) {
    if (isNaN(parseInt(input[input.length - 1]))) return input + '1';
    return input.replace(/(0*)([0-9]+$)/, function(match, p1, p2) {
        var up = parseInt(p2) + 1;
        return up.toString().length > p2.length ? p1.slice(0, -1) + up : p1 + up;
    });
}
P.S:我是新手,完全使用Js进行开发。但是,自从这几年以来,我一直在研究JSF和Java。

1 个答案:

答案 0 :(得分:0)

来自MDN

str.replace(regexp|substr, newSubStr|function[, flags])

在这种情况下,我们可以看到两个参数传递给replace,一个正则表达式文字和一个函数表达式。那就是:

str.replace(regexp, function)

和MDN告诉我们它们是什么:

  

function(replacement)
用于创建新函数的函数   substring(代替从参数接收的子字符串   1)。提供给此函数的参数在"将函数指定为参数"以下部分。

  

该函数的参数如下:

等。我不会引用整个表格。

如果将match参数保留在参数列表之外,则分配给p1p2的值将是第一个和第二个参数,而不是第二个和第三个参数。那些不会成为你需要的价值观。

这就像拿这段代码:

function call_with_one_two_three(f) {
    f(1,2,3);
}

call_with_one_two_three(function (one, two, three) {
    alert(two + three);
});

并且决定由于您没有使用one,因此您不需要它:

function call_with_one_two_three(f) {
    f(1,2,3);
}

call_with_one_two_three(function (two, three) {
    alert(two + three);
});

two + three提供3

简而言之:论点的位置很重要(而名称并不重要)。