未捕获的TypeError:无法读取属性' toString'为null

时间:2016-09-06 15:59:03

标签: javascript

我收到此消息:"未捕获的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();
}




1 个答案:

答案 0 :(得分:1)

您的正则表达式不匹配,因此返回nullnull没有方法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。只需检查其类型是否为函数。