Javascript else if语句被忽略

Javascript else if语句被忽略,javascript,Javascript,我有一个函数,如果pan.cost>0,则该函数必须执行不同的操作 那么让我们假设curPos=3和pan.cost=-1 现在当我这样做的时候,不管怎样,if(curPos+1===5 | | 30)总是被使用,即使curPos+1是2,3,4,6等(只要pan.cost

我有一个函数,如果
pan.cost>0
,则该函数必须执行不同的操作

那么让我们假设
curPos=3
pan.cost=-1

现在当我这样做的时候,不管怎样,
if(curPos+1===5 | | 30)
总是被使用,即使
curPos+1
是2,3,4,6等(只要
pan.cost<0

现在我将
console.log(curPos+1)
放在
else if语句中,它还表示它不符合要求

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");

  }
}
线路

curPos+1==5 | | 39

始终计算为truthy,因为它是:

(curPos+1==5)| | 39

39
是一个真实的值

线路

curPos+1==5 | | 39

始终计算为truthy,因为它是:

(curPos+1==5)| | 39


39
是一个真实的值

如果(curPos+1==5 | | 39)
将始终计算为true。看看你的头发或管子后面的部分<代码>如果(39)
将始终为真。

如果(curPos+1==5 | | 39)
将始终计算为真。看看你的头发或管子后面的部分<代码>如果(39)将始终为真。

39
将始终返回真且
成本不存在。

39
将始终返回真且
成本不存在。

<

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");

  }
}
试试这个:

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");

  }
}

问题是
if(curPos+1===5 | | | 39)
,你需要
if((curPos+1)==5 | | | |(curPos+1)==39)
没有人觉得奇怪,他将
pan
设置为似乎是一个数字,然后下一行他将其视为一个对象?@Waxi yes抱歉,该对象在其他地方声明。但我认为这与此无关question@Waxi,我们不知道
面板[curPos]
的计算结果是什么。我不知道你为什么会认为这是一个数字。@MikeMcCaughan是的,你是对的,我也不知道我为什么会这么想。问题是
如果(curPos+1==5 | | 39)
,你需要
如果((curPos+1)==5 | | |(curPos 1)==39)
没有人觉得奇怪,他将
pan
设置为一个数字,然后下一行他将其视为一个对象?@Waxi是的,对不起,该对象在其他地方声明。但我认为这与此无关question@Waxi,我们不知道
面板[curPos]
的计算结果是什么。我不知道你为什么会认为这是一个数字。@MikeMcCaughan是的,你是对的,我也不知道我为什么会这样想。谢谢!将接受你的回答(5分钟内),因为你是第一个。但是所有其他的答案都很好!令人惊叹的。很高兴有帮助。谢谢!将接受你的回答(5分钟内),因为你是第一个。但是所有其他的答案都很好!令人惊叹的。很高兴这有帮助。