从javascript匹配语句返回什么?

时间:2012-09-26 04:11:38

标签: javascript jquery

我有以下代码:

    if ($selectInput.data('propagate-title') === 'yes') {
        var m = this.id.match(/^modal_TempRowKey_(\d+)$/);
        if (m) {
            $("#modal_Title_" + m[1]).val(title);
        }
    }

有人可以解释返回的内容并将其放入m中。我可以将代码更改为以下代码并使其工作原理相同吗?

    if ($selectInput.data('propagate-title') === 'yes') {
        var m = this.id.match(/^modal_TempRowKey_(\d+)$/)[1];
        if (m) {
            $("#modal_Title_" + m).val(title);
        }
    }

2 个答案:

答案 0 :(得分:4)

两个代码片段之间存在重要差异。您无法进行所需的更改,因为如果不匹配,null操作将返回match,评估结果

null[1]

会抛出错误,比如

TypeError: Cannot read property '1' of null

如果正则表达式匹配,match的返回值是数组,如果没有匹配则返回null。返回数组的元素0是整个匹配,元素1将是从第一个(开始的括号对中的匹配。在第一个代码片段中,值m[1]"modal_TempRowKey_"之后的数字序列。

编辑:有关所有详细信息,请参阅Kyle在原始问题的评论中提供的链接。

答案 1 :(得分:1)

Here is match method explanation. 包含匹配项的数组,每个匹配项一项,如果未找到匹配项,则返回null

id与正则表达式匹配,返回数组或者为null,返回的数组分配给m。 所以m 1用在第一个代码中。

id与正则表达式匹配,返回数组,数组1分配给m。 所以m用在第二个代码中。

如果您的id不匹配大小写,则在第二个代码中,您将获得null或未定义的异常,但首先不会。