开发者问题收集

我不断收到错误: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