未捕获的类型错误:无法读取 null 的属性(读取“长度”)但代码按预期工作
2022-12-06
1599
我试图让此代码工作
let itCompanies = ["Facebook", "Google", "Microsoft", "Apple", "IBM", "Oracle", "Amazon"];
let oInCompany = itCompanies.forEach((element) => {
var theElement = element.match(/o/gi);
if (theElement.length > 1) { return console.log(element);
}
});
// the result is code returning the element name into console
代码按预期工作,但显示错误。
Uncaught TypeError: Cannot read properties of null (reading 'length')
at main.js:53:18
at Array.forEach (<anonymous>)
at main.js:51:30
这是否意味着 .length 为空?但代码按预期工作。
我只需要对错误进行解释,是我的语法还是什么?
我不明白它是什么,同时我的代码运行良好。将来是否有可能在某个地方出错?
3个回答
正则表达式 /o/gi 在 itCompanies 数组的字符串中查找字母“o”,但该数组中没有一个字符串包含多个“o”。因此,String.match() 方法返回 null,这会导致错误,要处理 null,您可以使用以下方法:
let itCompanies = ["Facebook", "Google", "Microsoft", "Apple", "IBM", "Oracle", "Amazon"];
let oInCompany = itCompanies.forEach((element) => {
var theElement = element.match(/o/gi);
if (theElement && theElement.length > 1) {
return console.log(element);
}
});
Anass Kartit
2022-12-06
string.prototype.match
如果找不到匹配,则可以返回null。请参阅
mdn
mdn> mdn
mdn
mdn
mdn
。
绝对应该考虑匹配数组为null。
chrisg86
2022-12-06
发生这种情况的原因是,有些单词中没有匹配项。如果没有任何匹配项,则匹配选择器将返回 null。
您可以在此处查看更多信息: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/match
当返回值为 null 时,您将获得 null.length。但 null 中没有属性 length。然后触发上述错误。
像这样更改您的代码,它将正常工作:
let itCompanies = ["Facebook", "Google", "Microsoft", "Apple", "IBM", "Oracle", "Amazon"];
let oInCompany = itCompanies.forEach((element) => {
var theElement = element.match(/o/gi);
if (theElement && theElement.length > 1) { return console.log(element);
}
});
dbonev
2022-12-06