JS:在if语句中更新变量,然后在语句条件中使用该变量?

时间:2018-05-16 01:46:07

标签: javascript

这让我很难过。我正在创建一个简单的函数,当单击一个元素(掷骰子)时,它会生成1到6之间的随机数。

我想使用if语句执行某些操作,如果滚动的数字为1或者之前滚动的数字为6,例如:

if(dice !== 1 || lastRoll !== 6) { //Do something

但是,我似乎无法让OR条件在这里工作。 dice !== 1lastRoll !== 6都可以独立工作,但如果在一个if语句中与OR条件结合使用,则无法正常工作。

我的完整功能如下:

var lastRoll = 0;

document.querySelector('.btn-roll').addEventListener('click', function() {

    var dice = Math.floor(Math.random() * 6) + 1;        
    console.log('current ' + dice + ' last ' + lastRoll); //<-- This displays expected results

   if(dice !== 1 || lastRoll !== 6) {
     lastRoll = dice;
     console.log('success');
   }
   else {
     lastRoll = 0;
     console.log('fail');
   }
}

有人知道为什么OR条件不起作用吗?

更新:

为了测试我这样做了:

var hardCoded = 6;
if(dice !== 1 || hardCoded !== 6) {

所以我希望条件总是失败。但事实并非如此。它仍然不喜欢if语句。

3 个答案:

答案 0 :(得分:1)

根据您的评论,我想您想要的是if(dice !== 1 && lastRoll !== 6)

答案 1 :(得分:0)

制作如下所示的if语句并检查, 首先,如果卷不是1,你需要做一些事情:

var lastRoll = 0;

document.querySelector('.btn-roll').addEventListener('click', function() {

  var dice = Math.floor(Math.random() * 6) + 1;        
  console.log('current ' + dice + ' last ' + lastRoll); //<-- This displays expected results

  if(dice !== 1) {
    //dice can be 2,3,4,5,6
    console.log('success');
  }
  else {
    console.log('fail');
  }
  lastRoll = dice;
}

然后你需要最后一次滚动不是6:

var lastRoll = 0;

document.querySelector('.btn-roll').addEventListener('click', function() {

  var dice = Math.floor(Math.random() * 6) + 1;        
  console.log('current ' + dice + ' last ' + lastRoll); //<-- This displays expected results

  if(dice !== 1) {
    //dice can be 2,3,4,5,6 and lastRoll can be 1,2,3,4,5,6
    if(lastRoll !== 6) {
      //dice can be 2,3,4,5,6 and lastRoll can be 1,2,3,4,5
      console.log('success');
    } else {
      // dice can be 2,3,4,5,6 lastRoll = 6
      console.log('fail');
    }
  }
  else {
    // dice can be 1 lastRoll can be 1,2,3,4,5,6
    console.log('fail');
  }
  lastRoll = dice;
}

答案 2 :(得分:0)

@MeltingDog - 你的代码看起来很好。这种情况非常罕见。如果您在此处使用调试器暂停脚本:

        var lastRoll = 0;
        var condition;

        document.querySelector('.btn-roll').addEventListener('click', function() {

            var dice = Math.floor(Math.random() * 6) + 1;        
            console.log('current ' + dice + ' last ' + lastRoll); //<-- This displays expected results

            debugger;
            condition = (dice !== 1 || lastRoll !== 6);
            console.log(condition);

           if(dice !== 1 || lastRoll !== 6) {
             lastRoll = dice;
             console.log('success');
           }
           else {
             lastRoll = 0;
             console.log('fail');
           }
        });

在恢复之前在控制台中键入dice = 1和lastRoll = 6,您将看到“失败”消息。