我不断收到错误:TypeError:无法读取 Javascript 中 null 的属性“length”
2017-12-30
301
我查看了其他帖子。我潜水很久了,这是我第一次发帖(我想)或者已经有一段时间了。无论如何,我知道问题是什么,我认为,根据其他回复,似乎我的变量没有初始化。但我不认为这是我的问题。
我正在尝试创建一个“猜单词”游戏,类似于没有火柴人的绞刑架游戏。我正在创建一个函数来查看字母在单词中出现的次数。我不确定我做得对不对。请查看我的代码并告诉我我做错了什么……?
谢谢!
function timesInWord(word, letter) {
var re = new RegExp(letter,"gi");
var isMatch = word.match(re).length;
if (isMatch != null && isMatch > 0) {
return isMatch;
} else {
return "No Match, Try again!";
}
}
console.log(timesInWord("Mississippi","r"));
2个回答
word.match(re)
如果没有匹配项,将返回
null
。这就是问题的原因。如果您想检查是否有匹配项,请在获取数组长度之前检查它是否不为
null
。
Federkun
2017-12-30
当未找到匹配项时,
word.match(re)
返回
null
。尝试在
null
上调用
length
会导致错误。
您不需要使用
length
属性。在您的情况下,仅检查
null
就足够了。尝试以下操作:
function timesInWord(word, letter) {
var re = new RegExp(letter,"gi");
var isMatch = word.match(re);
if (isMatch != null) {
return isMatch.length;
} else {
return "No Match, Try again!";
}
}
console.log(timesInWord("Mississippi","p"));
Mamun
2017-12-30