我的方法不应该触发

时间:2013-07-30 08:21:10

标签: javascript if-statement

此代码似乎循环通过向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");


                    }

我目前正在学习如何使用调试器,但我想我会把它留在这里看看是否有人知道原因。感谢。

2 个答案:

答案 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对象中。