Lihat bahawa fungsi berikut digunakan untuk mendapatkan nilai url.
function getURLParameter(name) {
return decodeURI(
(RegExp(name + '=' + '(.+?)(&|$)').exec(location.search)||[,null])[1]
);
}
Tetapi saya tidak tahu apakah ungkapan [,null] di sini.
Tujuan fungsi ini adalah untuk mendapatkan nilai parameter tertentu dalam URI, seperti URL
http://www.xxx.com/index.html?key=hello&value=world*
,此时的location.search
等于?key=hello&value=world
。比如要获取key
的值("hello"),调用getURLParameter("key")
.Sintaks exec adalah seperti berikut:
Jika ia sepadan, hasil pulangan ialah tatasusunan elemen pertama tatasusunan ialah subrentetan yang dipadankan, dan elemen seterusnya ialah kandungan kurungan penangkapan Seperti yang dapat dilihat daripada ungkapan biasa, hasil yang kita perlukan ialah th Kandungan kurungan penangkapan ialah elemen kedua tatasusunan, jadi
digunakan[1]
;Sebagai contoh, dengan mengandaikan URL masih URL di atas, kami memanggil
getURLParameter("key")
dan hasil yang sepadan ialah["key=hello&", "hello", "& "]
,"key=hello&"
ialah subrentetan yang dipadankan,"hello"
ialah kandungan kurungan tangkapan pertama,"&" ialah kandungan kurungan penangkapan kedua.
["key=hello&", "hello", "&"] || Hasil daripada [,null]
sudah tentu item sebelumnya, iaitu["key=hello&", "hello ", "&"]
, dan kemudian ambilgetURLParameter("key")
,匹配的结果是["key=hello&", "hello", "&"]
,"key=hello&"
是匹配的子串,"hello"
是第一个捕获型括号的内容,"&"
是第二个捕获型括号的内容。["key=hello&", "hello", "&"] || [,null]
的结果当然是前一项,也就是["key=hello&", "hello", "&"]
, 然后取[1]
,整个函数的返回值就是"hello"
, nilai pulangan keseluruhan fungsi ialah"hello"
.Walau bagaimanapun, jika kami memanggil
getURLParameter("masa")
, pemadanan gagal, jadi hasilnya adalah batal Pada masa ini, jika anda memanggilgetURLParameter("time")
,匹配失败,所以结果是null,此时如果你调用[1]
就会报错。[,null]
表示[undefined, null]
,当匹配失败的时候,就变成了null || [undefined, null]
这个结果是[undefined, null]
,此时再[1]
就不会报错了,此时整个函数返回的是null
, ralat akan dilaporkan.[,null]
bermaksud[undefined, null]
Apabila perlawanan gagal, ia menjadinull || [undefined, null]
Keputusan ini[undefined, null]
Pada masa ini, tiada ralat akan dilaporkan Pada masa ini, keseluruhan fungsi mengembalikannull
.Selepas memanggil fungsi
getURLParameter
, anda boleh menilai sama ada nilai pulangan adalah batal, ini bermakna tiada parameter sedemikian dalam URL jika ia bukan nol, nilai pulangan adalah nilai parameter yang diperlukan.Pendekatan malas,
(nama + '=' + '(.+?)(&|$)').exec(location.search)jika perlawanan berjaya. Hasilnya tidak akan batal.
Jika yang berikut ialah(.+?)
ialah nilai padanan biasa[1]
. Jika perlawanan gagal, exec mengembalikan null.(name + '=' + '(.+?)(&|$)').exec(location.search)
如果匹配成功。结果不会null。(.+?)
就是正则匹配的值[1]
。而如果匹配失败,exec返回null。[,null]
第一个值为undefined
,这个操作只是统一了返回值为null,关键还是最后面的[1]
导致的如果后面的是
[0]
,那[,null]
可以改写为[null]
[,null]
Nilai pertama adalahundefined
Operasi ini hanya menyatukan nilai pulangan kepada null Kuncinya ialah[1]
Disebabkan oleh[0]
, maka[,null]
boleh ditulis semula sebagai[null]
🎜[,null][1] Bukankah batal? Jika yang sebelumnya tidak dipadankan, null akan dikembalikan
Ia bersamaan dengan ini
Tetapi jika nilai parameter tidak diperolehi dalam bahagian sebelumnya (RegExp(nama + '=' + '(.+?)(&|$)').exec(location.search) ), ralat akan dilaporkan jika [1] diambil secara langsung. Jadi menambah [,null] pada penghujungnya adalah bersamaan dengan [undefined, null], dan mengambil [1] pada penghujungnya boleh memastikan bahawa ralat luar sempadan tatasusunan tidak akan berlaku kerana parameter url tidak boleh diperolehi