国产成人精品亚洲777人妖,欧美日韩精品一区视频,最新亚洲国产,国产乱码精品一区二区亚洲

您的位置:首頁技術(shù)文章
文章詳情頁

javascript - [,null]是什么用法

瀏覽:123日期:2023-05-13 14:25:55

問題描述

看到用下面的函數(shù)來取得url的值。

function getURLParameter(name) { return decodeURI((RegExp(name + ’=’ + ’(.+?)(&|$)’).exec(location.search)||[,null])[1] );}

但是不知道[,null]在這里是什么表達(dá)方式。

問題解答

回答1:

這個(gè)函數(shù)的作用是想取得URI中某個(gè)參數(shù)的值,如網(wǎng)址http://www.xxx.com/index.html?key=hello&value=world*,此時(shí)的location.search等于?key=hello&value=world。比如要獲取key的值('hello'),調(diào)用getURLParameter('key')就行。

exec的語法如下:

javascript - [,null]是什么用法

如果匹配,則返回結(jié)果是一個(gè)數(shù)組,數(shù)組的第一個(gè)元素是匹配的子串,后面的元素則依次是捕獲型括號的內(nèi)容,由正則表達(dá)式可見,我們需要的結(jié)果是第一個(gè)捕獲型括號的內(nèi)容,是數(shù)組的第二個(gè)元素,所以使用了[1];

舉例來說,假設(shè)網(wǎng)址還是上面的網(wǎng)址,我們調(diào)用getURLParameter('key'),匹配的結(jié)果是['key=hello&', 'hello', '&'],'key=hello&'是匹配的子串,'hello'是第一個(gè)捕獲型括號的內(nèi)容,'&'是第二個(gè)捕獲型括號的內(nèi)容。['key=hello&', 'hello', '&'] || [,null]的結(jié)果當(dāng)然是前一項(xiàng),也就是['key=hello&', 'hello', '&'], 然后取[1],整個(gè)函數(shù)的返回值就是'hello'。

但是,如果我們調(diào)用getURLParameter('time'),匹配失敗,所以結(jié)果是null,此時(shí)如果你調(diào)用[1]就會報(bào)錯(cuò)。[,null]表示[undefined, null],當(dāng)匹配失敗的時(shí)候,就變成了null || [undefined, null]這個(gè)結(jié)果是[undefined, null],此時(shí)再[1]就不會報(bào)錯(cuò)了,此時(shí)整個(gè)函數(shù)返回的是null。

調(diào)用完getURLParameter函數(shù)以后,可以通過判斷返回值是否是null,如果是null,則說明URL中沒有這個(gè)參數(shù);不為null,則返回值就是需要的參數(shù)值。

回答2:

偷懶的做法,(name + ’=’ + ’(.+?)(&|$)’).exec(location.search)如果匹配成功。結(jié)果不會null。(.+?)就是正則匹配的值[1]。而如果匹配失敗,exec返回null。[,null]第一個(gè)值為undefined,這個(gè)操作只是統(tǒng)一了返回值為null,關(guān)鍵還是最后面的[1]導(dǎo)致的如果后面的是[0],那[,null]可以改寫為[null]

回答3:

[,null][1]不就是null了嗎,前面的匹配不到就返回null

回答4:

相當(dāng)于這樣吧

return decodeURI( ( RegExp(name + ’=’ + ’(.+?)(&|$)’).exec(location.search) )[1] || null);

但是前面( RegExp(name + ’=’ + ’(.+?)(&|$)’).exec(location.search) )這一段如果沒有獲取到參數(shù)值,直接取[1]會報(bào)錯(cuò),所以在后面加[,null],相當(dāng)于[undefined, null],在最后取[1],可以確保不會因?yàn)楂@取不到url參數(shù)而發(fā)生數(shù)組越界錯(cuò)誤

標(biāo)簽: JavaScript
相關(guān)文章:
主站蜘蛛池模板: 仙游县| 新巴尔虎右旗| 桂平市| 阜康市| 社旗县| 乌拉特后旗| 玛沁县| 长顺县| 沙河市| 台北市| 宜君县| 靖边县| 舞钢市| 峨眉山市| 铅山县| 岱山县| 敦煌市| 安阳市| 个旧市| 新安县| 临泽县| 阿拉善左旗| 伊川县| 象山县| 信宜市| 深圳市| 开远市| 榕江县| 翁源县| 温州市| 博野县| 阿尔山市| 安康市| 蕉岭县| 娄烦县| 岳普湖县| 嘉祥县| 胶州市| 汾阳市| 井研县| 东乌珠穆沁旗|