繁体   English   中英

未捕获的类型错误:无法读取 null 的属性“toString”

[英]Uncaught TypeError: Cannot read property 'toString' of null

我在运行下面的代码时收到此消息:“未捕获的 TypeError:无法读取 null 的属性 'toString'”。 任何帮助将不胜感激,因为我不熟悉 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(); }

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

因此,此错误与 null 属性有关,虽然您没有声明null属性,但这就是您在第一个答案中共享的@baao 所返回的内容。

因此,每当您尝试在 JavaScript 中访问值为 null 或 undefined 的属性并尝试读取任何属性、调用其上的任何函数时,您都会收到一条错误消息:无法读取 null 的属性,正在读取 toString(),这就是在幕后进行,这就是您收到错误的原因。

您正在尝试在当前为null或为nullmatches项上调用toString()

在 TypeScript 的现代世界中,您可能可以像这样解决这个问题:

const reg: null || string = new RegExp("[/][a-zA-Z]{2}-[a-zA-Z]{2,4}[/]");

这可能表明,嘿,这个reg变量要么是字符串,要么可能为空。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM