0

这段代码似乎循环通过将 1 添加到 player1.score 直到分数 === 到我在第二个 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");


                    }

我目前正在学习使用调试器,但我想我会把它留在这里看看是否有人知道为什么。谢谢。

4

2 回答 2

2

您的值有可能被评估为字符串。===运算符不进行任何类型转换,这就是它更快的原因。

考虑将您的评估更改为使用==. 同样的问题出现在另一个问题中。


我已经稍微重构了您的代码并使用了==我上面建议的符号。请尝试运行它并告诉我它是否有效。

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");
        }
    }
}

}

于 2013-07-30T08:30:53.303 回答
1

当我查看您的函数时,似乎这个逻辑需要在 gameController 对象内。

于 2013-07-30T08:40:14.670 回答