Ich habe den unten stehenden Code für ein 10-Pin-Bowling-Scoring-System und versuche, mit zunehmender Punktzahl auf die Variable 'score' in der Konsole zuzugreifen. Wenn ich ein neues Spiel erstelle, indem ich var game = new BowlingGame()
eintippe, dann führe ich den Befehl game.roll(5)
aus, um ein Ergebnis zu erhalten, aber wenn ich dann var myScore = game.score()
gebe und dann myScore
in die Konsole einspiele, bekomme ich NaN. Ich habe gerade versucht, game.score()
einzugeben, kann es aber nicht abrufen. Kann ich die aktualisierte Punktzahl trotzdem abrufen, wenn ich weiterhin neue Rollen erstelle?Zugriff auf eine von mehreren Variablen innerhalb einer JavaScript-Funktion in der Konsole.
var BowlingGame = function() {
this.rolls = [];
this.currentRoll = 0;
};
BowlingGame.prototype.roll = function(pins) {
this.rolls[this.currentRoll++] = pins;
};
BowlingGame.prototype.score = function() {
var score = 0;
var frameIndex = 0;
var self = this;
function sumOfBallsInFrame() {
return self.rolls[frameIndex] + self.rolls[frameIndex + 1];
}
function spareBonus() {
return self.rolls[frameIndex + 2];
}
function strikeBonus() {
return self.rolls[frameIndex + 1] + self.rolls[frameIndex + 2];
}
function isStrike() {
return self.rolls[frameIndex] === 10;
}
function isSpare() {
return self.rolls[frameIndex] + self.rolls[frameIndex + 1] === 10;
}
for (var frame = 0; frame < 10; frame++) {
if (isStrike()) {
score += 10 + strikeBonus();
frameIndex++;
} else if (isSpare()) {
score += 10 + spareBonus();
frameIndex += 2;
} else {
score += sumOfBallsInFrame();
frameIndex += 2;
}
}
return score;
};