Проверить предыдущее и текущее значение в переменной - PullRequest
0 голосов
/ 20 июня 2020

Сначала проверьте мои коды:

<button id="submit">Roll</button>

<script>
    
function randomNumber(length) {
   var result           = '';
   var characters       = '123456789';
   var charactersLength = characters.length;
   for ( var i = 0; i < length; i++ ) {
      result += characters.charAt(Math.floor(Math.random() * charactersLength));
   }
   return result;
}


var oldNumber = 0;

$('#submit').click(function(){
    
    var winner = false;
    
    var currentNumber = randomNumber(3);
    
    if(currentNumber > oldNumber){
        winner = true;
    }
    
    oldNumber = currentNumber;
    
    alert(winner);
})

</script>

Теперь проблема в том, что победитель всех раундов истинен, oldNumber просто имеет значение 0. На самом деле хочу проверить большое и малое количество раундов.

Ответы [ 2 ]

0 голосов
/ 20 июня 2020

В вашей randomNumber() функция всегда возвращает строку numeri c, и вы присвоили этот номер типа строки переменной currentNumber. После этого вы сравниваете currentNumber (фактически строку) с oldNumber (который на самом деле является числом). Я думаю, что проблема здесь, а также в реализации randomNumber(). Вы должны сравнивать два значения числового типа, а не два числовых значения разных типов.

 if(currentNumber > oldNumber){
      winner = true;
 }

В приведенном выше коде, когда вы сравниваете числовую c строку (currentNumber) и фактическое число (oldNumber), JS делает текстовое сравнение обоих операндов. randomNumber() никогда не возвращает числовую c строку, которая начинается с «0», и вы всегда получаете числовую c строку, которая больше «0». например, currentNumber="123" и oldNumber=0, при сравнении этих двух, JS выполняет текстовое сравнение и преобразует другой операнд (oldNumber) из числа 0 в число c строку '0'. Поскольку '1' появляется позже при сравнении с '0'. Вы всегда будете правдой. Для получения дополнительной информации посетите это обсуждение . Попытайтесь исправить реализацию randomNumber() и убедитесь, что она всегда возвращает значение числового типа, а не numeri c string.

0 голосов
/ 20 июня 2020

Ваш код, вероятно, перезапускается каждый раз, когда вы запускаете его с использованием nodejs. Попробуйте сначала установить oldNumber на случайное число.


<button id="submit">Roll</button>

<script>
    
function randomNumber(length) {
   var result           = '';
   var characters       = '123456789';
   var charactersLength = characters.length;
   for ( var i = 0; i < length; i++ ) {
      result += characters.charAt(Math.floor(Math.random() * charactersLength));
   }
   return result;
}


var oldNumber = randomNumber(3);

$('#submit').click(function(){
    
    var winner = false;
    
    var currentNumber = randomNumber(3);
    
    if(currentNumber > oldNumber){
        winner = true;
    }
    
    oldNumber = currentNumber;
    
    alert(winner);
})

</script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...