You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript循环结束后重置变量及lettersGuessed报错问题求助

解决lettersGuessed重置后触发类型错误的问题

嘿,我来帮你搞定这个头疼的问题!你遇到的「未捕获类型错误:lettersGuessed不是函数」,根源其实是变量类型被意外改变了——一开始你可能把lettersGuessed定义成了函数,但后来用lettersGuessed = ""把它改成了字符串,后续代码尝试像调用函数一样使用它时,自然就报错了。

问题拆解

假设你最初的代码里,lettersGuessed是一个用来返回已猜字母的函数,比如:

function lettersGuessed() {
  // 返回已猜字母的逻辑
}

但游戏结束重置时,你把它赋值成了空字符串:lettersGuessed = "";。这时候lettersGuessed的类型从函数变成了字符串,当后续代码执行lettersGuessed()时,就会触发“不是函数”的错误。

解决方案

核心原则是保持lettersGuessed的类型一致,把它当成存储已猜字母的字符串变量来用,而不是函数:

  1. 初始化时就定义为字符串变量

    // 初始化存储已猜字母的字符串,而不是函数
    let lettersGuessed = "";
    // 供电脑选择的字母数组
    var letterBank = ["a", "b", "c", "d", "e", "f", "g", "h"];
    
  2. 重置时保持字符串类型
    游戏结束重置时,依然赋值为空字符串,不要改变它的类型:

    function resetGame() {
      // 重置已猜字母为空字符串
      lettersGuessed = "";
      // 其他游戏重置逻辑,比如重新选目标字母、重置剩余次数等
    }
    
  3. 检查代码中调用lettersGuessed的地方
    把所有像lettersGuessed()这样的函数调用,改成直接引用变量值。比如如果要显示已猜字母,直接用:

    // 显示已猜字母
    console.log(`已猜字母:${lettersGuessed}`);
    

完整示例片段

// 初始化变量
let lettersGuessed = "";
const letterBank = ["a", "b", "c", "d", "e", "f", "g", "h"];
let targetLetter = letterBank[Math.floor(Math.random() * letterBank.length)];
let remainingGuesses = 5;

// 处理用户猜测
function handleUserGuess(userGuess) {
  if (remainingGuesses <= 0) return;
  
  if (lettersGuessed.includes(userGuess)) {
    alert("你已经猜过这个字母啦!");
    return;
  }
  
  lettersGuessed += userGuess;
  
  if (userGuess === targetLetter) {
    alert("恭喜你猜对了!游戏结束");
    resetGame();
  } else {
    remainingGuesses--;
    if (remainingGuesses === 0) {
      alert(`游戏结束,正确字母是${targetLetter}!`);
      resetGame();
    }
  }
}

// 重置游戏
function resetGame() {
  lettersGuessed = "";
  targetLetter = letterBank[Math.floor(Math.random() * letterBank.length)];
  remainingGuesses = 5;
  // 这里可以添加重置页面显示的逻辑,比如清空已猜字母的展示区域
}

这样修改后,lettersGuessed始终是字符串类型,重置后再处理用户猜测时就不会触发类型错误啦!

内容的提问来源于stack exchange,提问作者Vincent Nardozzi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 06:45:11