Javascript中的分数增加(可变范围问题,可能吗?)

时间:2015-06-03 18:04:51

标签: javascript scope

作为一名完整的编程初学者,我正在关注CodeAcademy的JavaScript课程。我已经完成了摇滚剪刀指定,现在我想为我的游戏添加一个得分系统。我决定做的是创建两个名为userScore和computerScore的全局变量。然后游戏功能将在胜利时增加这些分数。最终我计划添加一个for或while循环,并在达到3分时结束游戏。问题是我无法增加分数。这是代码

var userScore=0
var compScore=0

//COMPARING FUNCTION
var compare = function(choice1, choice2)
{

        if(choice1 === choice2){ return "The result is a tie!" ;}
        else if(choice1 === "rock"){
                                     if(choice2 === "scissors"){ return "rock wins"; userScore++;  }
                                     else{ return "paper wins"; computerScore++;}
        }            
};



console.log(compare(userChoice, computerChoice));
console.log(userScore);
console.log (compScore);

然而,当我在控制台上记录scre变量时,分数增量不起作用。作为一种替代方法,我尝试创建单独的函数来增加称为userwin和compwin的分数。这是他们:

 var userwin= function()
{
    window.userScore++;
};

var compwin= function()
{
    window.computerScore++;
};

这些功能独立工作,并成功更改了userScore和computerScore变量。但是,当我尝试在比较函数的if语句中使用它们时,它们再次失败。

所以回顾:由于某种原因,我无法在比较功能中更改userScore和computerScore表单。这是一个简单的语法错误还是我不理解变量范围的一些基本方面。或者你们会推荐一种完全不同的评分方法而不是使用两种不同的评分变量吗?

3 个答案:

答案 0 :(得分:0)

两个问题,

  1. 您正在尝试从比较功能返回后提高分数
  2. 代码中的两个位置有错误的名称(compScorecomputerScore
  3. var userScore=0;
    var compScore=0;
    
    //COMPARING FUNCTION
    var compare = function(choice1, choice2)
    {
    
            if(choice1 === choice2){ return "The result is a tie!" ;}
            else if(choice1 === "rock"){
                                         if(choice2 === "scissors"){ userScore++; return "rock wins";  }
                                         else{ compScore++; return "paper wins"; }
            }            
    };
    
    
    
    console.log(compare(userChoice, computerChoice));
    console.log(userScore);
    console.log (compScore);
    

答案 1 :(得分:0)

您在return语句后递增得分。返回语句后的代码永远不会被执行。

请改为:

if(choice2 === "scissors"){ 
     userScore++;
     return "rock wins";  
}
else{ 
     computerScore++;
     return "paper wins";
}

答案 2 :(得分:0)

似乎很简单; =))

只需在变量增量后输入return语句......

你有这种方式,你在做增量之前从函数返回......