我刚刚发现这个代码片段与过滤哈希标签有关,但我不明白它想要做什么,而且我也不确定谷歌是什么。
感谢您的提醒...
var index = 0;
var hash = window.location.hash; //store the entered hash value eg, #02
if (hash) {
index = /\d+/.exec(hash)[0];
index = (parseInt(index) || 1) - 1;
}
答案 0 :(得分:2)
if (hash) {
:如果hash
不,则为undefined
,null
或空字符串等垃圾值。index = /\d+/.exec(hash)[0]
:查找哈希中的第一个数字,例如#432
内的432
(注意返回的值是字符串) index = (parseInt(index) || 1) - 1
:尝试将index
转换为数字,如果结果为数字且结果数字不是0
,则从返回的值中减去1
,否则返回1
然后从中减去1
,从而给我们0
,这里的主要想法是,似乎我们正在尝试获取数组的索引,因此索引不能少于比0
。答案 1 :(得分:1)
/\d+/
表示一个或多个数字。
+
表示前面一个或多个元素。
另外exec
如果匹配成功,则exec方法返回一个数组并进行更新 正则表达式对象的属性。返回的数组有 匹配的文本作为第一个项目,然后每个项目一个项目 捕获匹配包含文本的括号 捕获。
如果匹配失败,则exec方法返回null。
答案 2 :(得分:1)
在正则表达式\d
中将匹配单个数字。正则表达式中的+
将匹配之前表达式的重复。因此\d+
将匹配完整(所有重复)数字。
所以
"55".match(/\d+/) //=>["55"]
"55".match(/\d/) //=>["5"]
"A string with 55".match(/\d+/) //=>["55"]
答案 3 :(得分:1)
var hash = window.location.hash; //store the entered hash value eg, #02
只需获取网址的#部分
if (hash) {
检查散列是否为空
index = /\d+/.exec(hash)[0];
尝试将哈希与数字序列匹配(即\ d +表示的意思)并将第一个这样的序列分配给索引
index = (parseInt(index) || 1) - 1;
只需将索引转换为数字并将其减少1
如果哈希不包含数字,则此代码会抛出异常,因此它不是很健壮