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