我有以下代码:
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);
}
}
答案 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或未定义的异常,但首先不会。