我收到此消息:"未捕获的TypeError:无法读取属性' toString' of null"在运行下面的代码时。任何帮助将不胜感激,因为我不熟悉Javascript
提前谢谢。
function getUrlVars() {
var arrGamePath = document.referrer;
if(arrGamePath) {
var reg = new RegExp("[/][a-zA-Z]{2}-[a-zA-Z]{2,4}[/]");
var locale = reg.exec(arrGamePath) .toString();
while (locale.indexOf("/") != -1) {
locale = locale.replace("/", "");
}
return locale;
}else{
return false;
}
}
if(getUrlVars()) {
sCID = getUrlVars();
}

答案 0 :(得分:1)
您的正则表达式不匹配,因此返回null
。 null
没有方法toString()
。因此,您应首先检查匹配项,如果匹配不匹配,请返回false
(或执行您想要执行的任何操作 - 或更改您的正则表达式以使其匹配)
function getUrlVars() {
var arrGamePath = document.referrer;
if(arrGamePath) {
var reg = new RegExp("[/][a-zA-Z]{2}-[a-zA-Z]{2,4}[/]");
var matches = reg.exec(arrGamePath);
if (!matches) return false;
var locale = matches.toString();
while (locale.indexOf("/") != -1) {
locale = locale.replace("/", "");
}
return locale;
}else{
return false;
}
}
if(typeof getUrlVars == 'function') {
sCID = getUrlVars();
}
此外,您在if
行中调用该函数两次,忽略结果:
if (getUrlVars())
然后如果if
再次返回true。只需检查其类型是否为函数。