否则if语句被忽略

时间:2017-04-03 19:03:12

标签: javascript

我有一个函数,如果pan.cost > 0必须采取不同的行动。

所以,让我们说curPos = 3pan.cost = -1

现在当我这样做时,无论如何,if(curPos + 1 === 5 || 30)总是被使用,即使curPos + 1是2,3,4,6等(长pan.cost < 0

现在我已将console.log(curPos + 1)放在else if-statement内,并且还说它不符合要求。

function action(curPos)
{
  var pan = panel[curPos];

  if(pan.cost > 0)
  {

  }
  else if(curPos + 1 === 5 || 39)
  {
    console.log(curPos + 1);

  }
  else if(curPos + 1 === 3)
  {
    console.log("should be here");

  }
}

4 个答案:

答案 0 :(得分:1)

该行

curPos + 1 === 5 || 39

始终评估为真实,因为它被读取:

(curPos + 1 === 5) || 39

39是一个真正的价值。

答案 1 :(得分:1)

if(curPos + 1 === 5 || 39)将始终评估为true。看看你或管道之后的部分。 if(39)永远都是真的。

答案 2 :(得分:1)

|| 39将始终返回true并且pan.cost不存在。

答案 3 :(得分:1)

试试这个:

function action(curPos)
{
  var pan = panel[curPos];
  var newCurPos = (curPost + 1);

  if(pan.cost > 0)
  {

  }
  else if(newCurPos === 5 || newCurPos === 39)
  {
    console.log(newCurPos);

  }
  else if(newCurPos === 3)
  {
    console.log("should be here");

  }
}