我正在申请国际象棋练习,但有些事情使我失望。我的正方形编号为1-64,第一行为1到8,第二行为9到16,依此类推。每当玩家尝试移动一块棋子时,我的程序都会根据规则检查目标方块是否合法。

对于我的国王,我有这样一条话:

else if (startID >= 58 && startID <= 63){ // bottom row
                if (endID == startID - 7 || endID == startID - 8 || endID == startID - 9 || endID == startID - 1 || endID == startID + 1) return true;
            }

基本上,如果国王在最后一行(而不是角落正方形)上,请检查目标正方形是否是相邻的正方形。但是,它们都可以工作,除了这一部分,该部分检查目标正方形是否直接在右侧:
endID == startID + 1

在程序的其他部分,我一直在使用compare语句,直到在有问题的变量之前添加“parseInt()”为止。有没有办法确保变量始终是整数?

最佳答案

您可以尝试以下

var myStringNum = "1";
if (myStringNum === parseInt(myStringNum, 10) && myStringNum !== NaN){
    console.log('ok'); // does not print anything
}

var myNormalNum = 1;
if (myNormalNum === parseInt(myNormalNum, 10) && myNormalNum !== NaN){
    console.log('ok'); // prints ok
}

诀窍是使用'==='运算符。

这是一个jsfiddle example

10-08 18:15