JavaScript Неожиданный конец ввода с разрывом - PullRequest
0 голосов
/ 09 апреля 2019

С этим очень простым кодом:

<body>
<script>
  var j;
  j=0;
  do {
    document.write("J="+j+" ");
    j++;
    if (j=4) {
      break;
    }
  }
</script>
</body>

Я получаю сообщение об ошибке: Uncaught SyntaxError: Неожиданный конец ввода только в конце сценария. Это происходит, потому что я пытаюсь использовать break для выхода из цикла.

Конечно, это не тот код, над которым я работаю, он намного сложнее и требует перерыва. Я знаю, что в этом случае цикл do в то время как цикл или для цикла сделал бы это. Это только самый маленький код, который я показываю с ошибкой.

Скобки сбалансированы, скобки сбалансированы, почему он говорит, что он неполон?

P.S. Я также пробовал этот же код в качестве функции, получая ошибку Uncaught SyntaxError: Неожиданный токен} на фигурной скобке, закрывающей функцию.

Ответы [ 2 ]

3 голосов
/ 09 апреля 2019

do операторы в Javascript ожидают соответствующего while выражения.

Например,

  var j;
  j=0;
  do {
    document.write("J="+j+" ");
    j++;
    if (j=4) {
      break;
    }
  } while (true);

Также стоит отметить, что if (j=4) всегда верно в JS, вы, вероятно, имели в виду === для сравнения вместо = для назначения.(как Adriani6 упомянул в комментариях)

Хотя, если это полный пример, с которым вы работаете, было бы понятнее удалить условие if и разбить его так:

  var j;
  j=0;
  do {
    document.write("J="+j+" ");
    j++;
  } while (j !== 4);

или даже легче читать:

for (let j = 0; j < 4; j++) {
   document.write("J="+j+" ");
}
0 голосов
/ 09 апреля 2019
if (j=4) {
      break;
    }

это должно быть j == 4

...