Javascript [1]对函数有什么作用?

Javascript [1]对函数有什么作用?,javascript,regex,Javascript,Regex,我需要解释一下下面的js代码 function getURLParameter(url, name) { return (RegExp(name + '=' + '(.+?)(&|$)') .exec(url)||[,null])[1]; } var id = getURLParameter(url, 'id'); console.log(id); //1 // let say the example of url is // index.php?id=1&user

我需要解释一下下面的js代码

function getURLParameter(url, name) {
  return (RegExp(name + '=' + '(.+?)(&|$)')
  .exec(url)||[,null])[1];
}

var id = getURLParameter(url, 'id');
console.log(id); //1

// let say the example of url is 
// index.php?id=1&user=xxx
return语句上的
[1]
用于什么

我搞不清楚它是如何得到id的值1的。

返回一个包含正则表达式匹配项的数组(或
null

[1]
只访问该数组中的第二个元素—在本例中是正则表达式中捕获组的值

这相当于:

函数getURLParameter(url,名称){ var regexp=new regexp(name+'='+'(.+?)(&|$)); var result=regexp.exec(url);//包含 //匹配的字符,则 //捕获组和端锚 //(或空) if(Array.isArray(结果)){ 返回结果[1]; }否则{ 返回null; } }
它访问数组的第二个元素。您可以进行调试并查看您自己。
.exec(url)
的返回值可能是一个数组。如果
.exec(url)
不返回数组,我认为
| |[,null])
默认将
[,null]
作为要索引到的数组,最后,
[1]
将索引到在该点操作的值所在的任何数组中。因此,您应该获取由.exec(url)返回的数组的第二个元素,或者如果.exec(url)返回null,则获取null。但正如@Batman25663所说,您应该通过调试来验证。。。。第二个元素可能是由正则表达式模式指定的url的参数部分。通过将整个表达式拆分为多个部分来调试它。然后您可以查看中间结果。很好,您还提供了代码的非紧凑等效视图。更容易理解,我认为会对OP有很大帮助。3个元素的数组,而不是2个。完全匹配(0)、id值(1)和结束锚(2)@Tezra,您完全正确。谢谢你指出这一点。@PeterMader感谢你的解释,也感谢那些帮助你的人:)