我正在努力应对挑战,并尝试进行设置,以便在您传递字符串的情况下,可以确定该字符串中是否存在2至4个字母参数。
我对该函数的测试有效,但是,如果匹配的数组的长度为0(如果所述字符串中没有匹配的字母),则无法测量长度。我收到错误消息:TypeError: Cannot read property 'length' of null
我尝试使用一个条件,如果长度为null,该条件将返回字符串。没用,我不确定是否有办法将此错误归纳为条件错误。有什么想法吗?
TLDR:在抛出错误之前,是否有办法捕捉到TypeError: Cannot read property 'length' of null
?
function countLetters(string, letter) {
let regex = new RegExp(letter, 'g');
let matched = string.match(regex);
if (matched.length == null) {
return "There are no matching characters.";
} else {
let totalLetters = matched.length;
return (totalLetters >= 2 && totalLetters <= 4)? true : false;
}
}
countLetters('Letter', 'e');
true
countLetters('Letter', 'r');
false
countLetters('Letter', 'z');
//TypeError: Cannot read property 'length' of null
答案 0 :(得分:1)
If(matched == null || match.length!= 0)
答案 1 :(得分:0)
let matched = string.match(regex) || [];
matched.length == null
will always be false
,因此请尝试matched.length === 0
答案 2 :(得分:0)
需要两项更改才能使其按需工作:
以下更正的代码:
function countLetters(string, letter) {
let regex = new RegExp(letter, 'g');
let matched = string.match(regex) || [];
if (matched.length == 0) {
return "There are no matching characters.";
} else {
let totalLetters = matched.length;
return (totalLetters >= 2 && totalLetters <= 4)? true : false;
}
}
我强烈建议您适当地命名您的方法。它与返回值或类型不匹配。同样,您返回string
或boolean
值。应该避免这一点。不管是否找到匹配项,都返回相同类型的值。