如何只执行一次函数?

Lim*_*uls 2 javascript arrays function increment

例如,我有一个功能

Question.prototype.checkAnswer = function(answer1, answer2) {
   if (answer1.innerHTML  == this.correctAnswer) {
    console.log("correct");
    players1.moveCharacter = true;
    pointAmount+= 1;
    point.innerHTML = pointAmount;
  } else {
    console.log("nope")
  }
}
Run Code Online (Sandbox Code Playgroud)

答案是正确的id增加1点积分总数.但问题是,如果我不移动到数组中的下一个问题并且只是继续点击答案按钮,我会在我决定继续下一个问题之前继续获得我想要的分数.我怎么能解决这个问题,这样我才能回答这个问题而只能得到一点.我相信我需要确保该函数只运行一次?

这可能很容易解决,但我是新的,不能想到任何东西.

Mar*_*nde 5

您可以使用一个简单的标志,并true在调用该函数后将其设置为.

function Question() {}

Question.prototype.checkAnswer = function(answer1, answer2) {
   
  if(this.answerChecked)
    return; // If answer was already checked, leave.
  
  this.answerChecked = true;
 
  // The rest of your code
  console.log('Run');
}

const question = new Question();

question.checkAnswer('yes', 'no');
question.checkAnswer('again', 'no'); // This will do nothing
Run Code Online (Sandbox Code Playgroud)