将整数错误地解析为字符串

3
我正在制作一个象棋应用程序来练习,但有些东西让我困扰。我的棋盘方格从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

在程序的其他部分中,我遇到了一些使用比较语句时出现问题的情况,直到我在有问题的变量前面添加了'parseInt()'。有没有一种方法可以确保一个变量始终是整数?


是的,使用parseInt(startID,10) - mplungjan
不,JavaScript不使用类型。但是,为什么不使用嵌套数组来维护位置呢? - sjngm
你最初是从哪里获取 startIDendID 的值的?是从 HTML 属性中获取的吗? - Teemu
是的,它们都是每个方格的ID。 - MarksCode
HTML属性的值始终是字符串,当读取时必须将它们转换为数字。 - Teemu
1个回答

0
你可以尝试以下方法。
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 示例


当我将所有的“==”替换为“===”时,我的程序似乎不再工作了,可能是因为在某些比较中涉及到了parseInt()函数。 - MarksCode
在进行任何比较之前,请确保使用方法parseInt(myVar, 10)将您使用的变量转换为整数。 - Sotiris Kiritsis

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接