![](/img/trans.png)
[英]"Uncaught TypeError: Cannot read property 'toString' of null"
[英]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
或为null
的matches
项上调用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.