我正在制作一个以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;
}
}
P.S .--每当石头进入三岁以下时,玩家和计算机都可以获得比现有石头更多的石头,这就是为什么第一个if语句就在那里。
答案 0 :(得分:1)
那是因为你在比较字符串:
"19" >= "2" // false
你必须将至少一个变量强制转换为整数,假设它们都是字符串:
stones = parseInt(stones, 10);
stonesTaken = parseInt(stonesTaken, 10);
答案 1 :(得分:0)
确保传递整数值或仅使用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;
}
}