для l oop параметр не работает должным образом в JavaScript - PullRequest
0 голосов
/ 06 марта 2020

Здравствуйте: я новое программирование. Моя проблема в том, что оценка в предложении for не работает должным образом.

С: salir = 'n' он работает правильно
С: salir == 'n' не работает.

Спасибо

<script type="text/javascript">
    var tabla="";
    var numusuario=0;
    var min=0;
    var max=9;
    var salir='s';
    numusuario=prompt("Escribe un número entre 0 y 9: ");
    for(var j=1;salir='n';j++) 
    {
        if(numusuario<0 || numusuario>=10)
        {
            salir='s';
            numusuario=prompt("Escribe un número entre 0 y 9: ");
        }
        else
        {
            for(var x=min;x<=max;x++)
            {
                tabla = tabla + x + " x " + numusuario + " = " + (x*numusuario) + "\n";
            }
            alert(tabla);
            break;
        }
    }
</script>

Ответы [ 2 ]

2 голосов
/ 06 марта 2020

salir='n' означает назначения. всегда возвращается true

salir=='n' означает сравнение. это возвращение false, потому что salir='s', поэтому s не равно n

0 голосов
/ 06 марта 2020

Здесь происходит несколько вещей, но главное заключается в том, что вы смешиваете различные формы управления потоком:

  • Вы используете salir (выход, для не испанских sh колонок) как все oop индикатор конца, но ...
  • Условие l oop всегда верно (так как salir='n' оценивается как 'n', что верно)
  • Вы также используете переменная j, без использования (вы ничего не делаете с ней, она не участвует ни в условии l oop)
  • Единственная возможность выхода из l oop - это break предложение, которое существует как l oop.

Поскольку ожидаемое поведение неясно для меня, я не могу принять решение, но если оно будет продолжаться, пока пользователь не напишет действительное число, затем запишите таблицу умножения этого числа, это может быть:

<script type="text/javascript">
    var tabla="";
    var numusuario=0;
    var min=0;
    var max=9;
    var salir = 'n';

    do {
        numusuario=prompt("Escribe un número entre 0 y 9: ");
        if(numusuario>0 && numusuario<10) {
            for(var x=min;x<=max;x++)
            {
                tabla = tabla + x + " x " + numusuario + " = " + (x*numusuario) + "\n";
            }
            alert(tabla);
            salir = 's';
        }
    } while(salir == 'n')


</script>

do {} while () выполняется по крайней мере один раз и проверяет условие в конце, которое кажется лучше подходит в этом случае, мы отбрасываем переменную j и использовать переменную salir в качестве управления потоком, пока пользователь пишет правильный номер.

...