-9

如果没有哈希,你能告诉我 location.hash.match 会返回什么吗?

我的代码:

function getHashValue(key) {
    return location.hash.match(new RegExp(key + '=([^&]*)'))[1];
}
test = getHashValue('test');

if (test == 'abc') {
    //code WORKS
}   
else if (test == 'sal') {
    //code WORKS
}     
else if (test == "") {
    //code DOESNT WORKS
}

但它不起作用

我忘了提到我的代码“getHashValue”返回哈希值示例:#test=abc

对不起,我忘了提

4

3 回答 3

2

为什么不只是?

test = getHashValue('test');
if (test === undefined) {
  //code
}

编辑

错误来自match()调用中的空返回。如果匹配为 "" 或 null,则以下更改将返回一个空字符串。

function getHashValue(key) {
    var match = location.hash  .match(new RegExp(key + '=([^&]*)'));
    return match ? match[1] : "";
}
于 2013-07-30T16:09:38.450 回答
1

如果您location.hash在任何不使用哈希的网站上的浏览器控制台中运行,您会发现它返回空字符串""

因此,对其进行正则表达式匹配将找到 0 个结果,返回null,此时,您尝试访问null[1]...

于 2013-07-30T16:03:28.577 回答
0

location.hash将是空字符串和您的函数:

function getHashValue(key) {
  return location.hash.match(new RegExp(key + '=([^&]*)'))[1];
}

确实会回来undefined。问题是您错误地检查了“未定义”值。将您的代码更改为:

test = getHashValue('test');
if (typeof(test) === 'undefined') {
  //code
}
于 2013-07-30T16:04:01.857 回答