我一直收到错误:TypeError:无法在Javascript中读取null的属性'length'

时间:2017-12-30 00:31:38

标签: javascript

我看过其他主题。我是一个长期的潜伏者,这是我第一次发帖(我想)或者已经有一段时间了。无论如何,我知道问题是什么,我认为,基于其他响应,似乎我的变量没有被初始化。但我不认为这是我的问题。

我正在尝试创建一个“猜词”游戏,类似于没有棒图的刽子手。我正在创建一个函数,可以看到字母中的字母数量。我不确定我做得对。请查看我的代码并告诉我我做错了什么......?

谢谢!

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 个答案:

答案 0 :(得分:2)

如果没有匹配,

word.match(re)将返回null。这就是问题的原因。如果要在获取数组长度之前检查是否存在匹配项,请检查它是否不是null

答案 1 :(得分:1)

如果找不到匹配项,则word.match(re)会返回null。尝试在length上致电null会导致错误。

您不需要使用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"));