2017-04-03 14 views
0

私はpan.cost > 0の場合、違う動作をしなければならない関数を持っています。else if文が無視される

だから今

のは、私がこれを行うときcurPos = 3pan.cost = -1

は今、どん​​な、if(curPos + 1 === 5 || 30)は常にcurPos + 1が(長いpan.cost < 0など)2,3,4,6-などの場合でも使用されていないとしましょう私はelse if-statementの中にconsole.log(curPos + 1)を入れました、そして、それはまた、それが要件を満たしていないと言います。

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

    } 
} 
+5

((curPos + 1)=== 5 ||(curPos場合は、問題領域が ''(curPosは、+ 1 === 5 || 39)場合である、あなたは '必要+ 1)=== 39) ' – Satpal

+0

数字のように見えるものに「パン」を設定し、それをオブジェクトのように扱う次の行を設定するのは、奇妙だと誰も思っていませんか? – Slime

+0

@Waxiはい申し訳ありませんが、オブジェクトは他の場所で宣言されています。しかし、私はそれがこの質問には関係ないと思った。 –

答えて

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

    } 
} 
+0

ありがとう!答えを受け入れるか(5分後)、あなたが最初だったからです。しかし、他のすべての答えも素晴らしかったです! –

+0

それが助けてくれてうれしい。 –

1

それが読まれているため

curPos + 1 === 5 || 39

は常に、truthyに評価ライン:

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

39がtruthy値です。

1

if(curPos + 1 === 5 || 39)は常にtrueに評価されます。あなたのパイプの後ろの部分を見てください。 if(39)は常にtrueになります。

1

|| 39は常にtrueを返し、pan.costは存在しません。