此代码似乎循环通过向player1.score添加1,直到得分为===,无论我放入第二个if语句。谁知道为什么?
pointScored: {
startNextSet: function(Scorer) {
if (gameController.bananasTaken < 3 && Scorer === "player1") {
console.log(gameController.player1.score);
gameController.player1.score += 1;
if (gameController.player1.score === 10 &&
gameController.bananasTaken === 0 &&
gameController.player1.bananaCount === 0) {
console.log(gameController.player1.score);
gameController.updatePlayerStats(gameController.Banana1, 20, gameController.canvas.height
- 20 - gameController.Banana1.height, gameController.player1, "left");
console.log("player 1's first point");
}
我目前正在学习如何使用调试器,但我想我会把它留在这里看看是否有人知道原因。感谢。
答案 0 :(得分:2)
您的值有可能被评估为字符串。 ===
运算符不执行任何类型转换,这就是为什么它更快。
考虑更改您的评估以使用==
。 another question中出现了同样的问题。
我稍微重构了你的代码&amp;使用了我上面建议的==
符号。请尝试运行它并告诉我它是否有效。
pointScored:{
startNextSet: function(Scorer) {
gc=gameController; //to save thy fingers from typing ache
if (gc.bananasTaken > 2 || Scorer !== "player1")
return;
console.log(gc.player1.score); // this logs 6 times from 0 to 5
gc.player1.score += 1;
if (gc.player1.score == 5 && gc.bananasTaken == 0) {
alert(gc.player1.score); //*******!
if(gc.player1.bananaCount == 0) {
gc.updatePlayerStats(gc.Banana1, 20, gc.canvas.height - 20 - gc.Banana1.height, gc.player1, "left");
console.log("player 1's first point");
}
}
}
}
答案 1 :(得分:1)
当我看你的函数时,似乎这个逻辑需要在gameController对象中。