Voyez que la fonction suivante est utilisée pour obtenir la valeur de l'url.
function getURLParameter(name) {
return decodeURI(
(RegExp(name + '=' + '(.+?)(&|$)').exec(location.search)||[,null])[1]
);
}
Mais je ne sais pas quelle expression [,null] est ici.
Le but de cette fonction est d'obtenir la valeur d'un certain paramètre dans l'URI, comme l'URL
http://www.xxx.com/index.html?key=hello&value=world*
,此时的location.search
等于?key=hello&value=world
。比如要获取key
的值("hello"),调用getURLParameter("key")
.La syntaxe de exec est la suivante :
S'il correspond, le résultat renvoyé est un tableau. Le premier élément du tableau est la sous-chaîne correspondante, et les éléments suivants sont le contenu des parenthèses de capture, comme le montre l'expression régulière, le résultat dont nous avons besoin. est le ème Le contenu d'un support de capture est le deuxième élément du tableau, donc
est utilisé[1]
;Par exemple, en supposant que l'URL est toujours l'URL ci-dessus, nous appelons
getURLParameter("key")
, et le résultat correspondant est["key=hello&", "hello", "& "]
,"key=hello&"
est la sous-chaîne correspondante,"hello"
est le contenu du premier crochet de capture,"&" est le contenu de la deuxième parenthèse de capture.
["key=hello&", "hello", "&"] || Le résultat de [,null]
est bien sûr l'élément précédent, qui est["key=hello&", "hello ", "&"]
, puis prenezgetURLParameter("key")
,匹配的结果是["key=hello&", "hello", "&"]
,"key=hello&"
是匹配的子串,"hello"
是第一个捕获型括号的内容,"&"
是第二个捕获型括号的内容。["key=hello&", "hello", "&"] || [,null]
的结果当然是前一项,也就是["key=hello&", "hello", "&"]
, 然后取[1]
,整个函数的返回值就是"hello"
, la valeur de retour de la fonction entière est"hello"
.Cependant, si nous appelons
getURLParameter("time")
, la correspondance échoue, donc le résultat est nul. À ce moment, si vous appelezgetURLParameter("time")
,匹配失败,所以结果是null,此时如果你调用[1]
就会报错。[,null]
表示[undefined, null]
,当匹配失败的时候,就变成了null || [undefined, null]
这个结果是[undefined, null]
,此时再[1]
就不会报错了,此时整个函数返回的是null
, une erreur sera signalée.[,null]
signifie[non défini, null]
Lorsque la correspondance échoue, elle devientnull || [non défini, null]
.[undefined, null]
À ce stade, aucune erreur ne sera signalée. À ce stade, la fonction entière renvoienull
.Après avoir appelé la fonction
getURLParameter
, vous pouvez juger si la valeur de retour est nulle. Si elle est nulle, cela signifie qu'il n'y a pas de paramètre de ce type dans l'URL ; si elle n'est pas nulle, la valeur de retour est la valeur du paramètre requis.Approche paresseuse,
Si ce qui suit est(name + '=' + '(.+?)(&|$)').exec(location.search)
si la correspondance est réussie. Le résultat ne sera pas nul.(.+?)
est la valeur correspondante normale[1]
. Si la correspondance échoue, exec renvoie null.(name + '=' + '(.+?)(&|$)').exec(location.search)
如果匹配成功。结果不会null。(.+?)
就是正则匹配的值[1]
。而如果匹配失败,exec返回null。[,null]
第一个值为undefined
,这个操作只是统一了返回值为null,关键还是最后面的[1]
导致的如果后面的是
[0]
,那[,null]
可以改写为[null]
[,null]
La première valeur estundefined
Cette opération unifie uniquement la valeur de retour à null La clé est la dernière[1]
. Causes[0]
, alors[,null]
peut être réécrit comme[null]
🎜[,null][1] N'est-il pas nul ? Si le précédent ne correspond pas, null sera renvoyé
C'est équivalent à ça
Mais si la valeur du paramètre n'est pas obtenue dans la section précédente (RegExp(name + '=' + '(.+?)(&|$)').exec(location.search) ), une erreur sera signalée si [1] est pris directement. Donc, ajouter [,null] à la fin équivaut à [undefined, null], et prendre [1] à la fin peut garantir que les erreurs hors limites du tableau ne se produiront pas en raison des paramètres d'URL. ne peut pas être obtenu