数字错了

时间:2015-04-21 12:04:25

标签: javascript node.js if-statement numbers

我遇到了一个奇怪的问题。

我已在我的服务器上保存了“当前正在运行”的剪辑,然后发送下一个或上一个剪辑的ID以确定我是否需要向前或向后跳过。

if ((request.command.substring(15) > device.currentClip)) {
            console.log("XXXXX command: " + request.command.substring(15));
            console.log("XXXXX current clip " + device.currentClip);
            console.log("[INFO] skipping forward (playlist)");
            return;
}  else if ((request.command.substring(15) < device.currentClip)) {
            console.log("XXXXX command: " + request.command.substring(15));
            console.log("XXXXX current clip " + device.currentClip);
            console.log("[INFO] skipping backward (playlist)");
            return;
}

奇怪的是,超过10的数字被错误地评估,即使控制台显示它们是按原样收到的。

为什么?它可能与错误的类型有关吗?我希望它们是自动输入或至少抛出错误。但他们似乎只是“错误”。

控制台(始终点击前翻按钮):

'goto: clip id: 12'
XXXXX command: 12
XXXXX current clip 11
[INFO] skipping forward (playlist)
'goto: clip id: 10'
XXXXX command: 10
XXXXX current clip 9
[INFO] skipping backward (playlist)

有人可以解释(可能的)错误吗?

1 个答案:

答案 0 :(得分:2)

substring()返回一个字符串,并通过逐字符比较完成字符串的比较,因此:

  • “10”&lt; “9”和
  • “10”&lt; “11”

您可以使用parseInt功能并将双方转换为int(如果device.currentClip已经是int,您也不需要转换它:< / p>

var intCommand = parseInt(request.command.substring(15), 10);
var intCurrentClip = parseInt(device.currentClip);
if (intCommand > intCurrentClip)) {
// the rest of the code