从函数返回布尔值

returning boolean values from functions

本文关键字:布尔值 返回 函数      更新时间:2023-09-26

我正在制作一款一开始有15-30颗石头的游戏,用户和电脑都在取石头,直到最后一块石头被取走。但是,我需要一个函数来确定用户取走的石头的数量是否有效,这意味着它小于或等于3且大于0。所以我的函数应该返回true或false,但是当我输入"2"时,它返回false。下面是所涉及的代码:

var valid = validEntry(stones, stonesTaken);
function validEntry(stones, stonesTaken) {
    if (stones >= stonesTaken) {
        if(stonesTaken <= 3 && stonesTaken > 0) {
            return true;
        } else {
            return false;
        }
    } else {
        return false;
    }
}

注:—当棋子少于3时,玩家和电脑都不能取更多的棋子,这就是第一个if语句出现的原因。

这是因为你在比较字符串:

"19" >= "2" // false

您必须将至少一个变量强制转换为整数,假设它们都是字符串:

stones = parseInt(stones, 10);
stonesTaken = parseInt(stonesTaken, 10);

确保您传递整数值或仅使用parseInt()作为@Jared Farrish在评论中提到的

function validEntry(stones, stonesTaken) {
    stones = parseInt(stones);
    stonesTaken = parseInt(stonesTaken);
    if (stones >= stonesTaken) {
        if(stonesTaken <= 3 && stonesTaken > 0) {
            return true;
        } else {
            return false;
        }
    } else {
        return false;
    }
}