Как мне заставить мой оператор if / else запускать кучу функций, если мой оператор IF является ложным?

#javascript

#javascript

Вопрос:

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

 var Messagelength = prompt("What is the length of a single passage from the broken-up cryptogram? Write down as the numbers appear, or else you will    need to refresh this page and try again.");
if (0 >= Messagelength)(true){
    confirm("No negative numbers or 0 are accepted")};
if (0 >= Messagelength)(false){
var MessagelengthA = function(number) {
    var PercentageA = number * 0.08167;
    confirm(PercentageA);
};
};
 

Я хочу, чтобы он выполнял остальную часть моего скрипта как обычно, но только если число, заданное в приглашении, заданном в невидимой части кода, больше 0.
Итак, после нескольких попыток с тем, что люди сказали мне сделать, я в конечном итоге решил, что это мой лучший шаг к моей цели. Проблема остается, хотя она не работает. Если бы я удалил второй оператор if , первый воспроизводится независимо, и если я удалю первый или просто оставлю второй оператор if , то ничего не произойдет, даже начальное приглашение, определяющее значение Messagelength . Итак, резюмируя, мой вопрос в том, как мне заставить страницу запускать скрипт из 26 различных функций, но только если число, которое пользователь вводит в приглашение, больше 0, и НЕ запускать эти 26 функций, если оно НЕ больше 0?

РЕДАКТИРОВАТЬ: я смог найти свою ошибку и исправить ее. У меня была точка с запятой в конце моего оператора if, и ее там не должно было быть. Скрипт, наконец, работает так, как я и хотел. Спасибо!

Комментарии:

1. В третьей строке у вас есть continue оператор. Это применимо только внутри цикла ( for , while , и т.д.) . Если этот код не находится внутри цикла, вы не можете его использовать. Если он находится внутри функции, и вы хотите его остановить, используйте return; вместо этого.

2. Почему вы используете confirm , когда не используете результат? Используется alert для отображения всплывающего сообщения, если вам все равно, нажимают ли они OK или Cancel .

Ответ №1:

Вы сказали это в названии вашего вопроса. Это if/else оператор, поэтому поместите остальную часть кода в else блок.

 var MessagelengthA = function(number) {
    var PercentageA = number * 0.08167;
    confirm(PercentageA);
};
if (MessageLength <= 0) {
    alert("No negative numbers or 0 are accepted");
} else {
    MessageLengthA(MessageLength);
    // rest of code here        
}
 

Комментарии:

1. Похоже, из-за этого возникает проблема. После начального оператора if / else следует серия из 26 функций и вызовов переменных, все идентичные, за исключением буквы (соответствующей алфавитному значению, которое они представляют) в конце имени переменной. Кстати, я пробовал это, и он не будет запускаться на веб-сайте. Мой единственный

2. Подобный код, вероятно, должен представлять собой цикл, а не 26 различных вызовов функций. И если у вас есть переменные, которые отличаются только буквой или цифрой, они, вероятно, должны быть массивом или объектом, а не отдельными переменными. Но что касается этого ответа, это не имеет значения. Вы можете поместить в блок столько, сколько захотите else .

Ответ №2:

Удалить continue . Это для перезапуска тел цикла.

if Оператор просто предоставляет способ запуска кода, если заданное условие истинно. Если это так, выполняется этот блок кода. Независимо от того, выполняется это или нет, выполняется следующий блок.

 if (true) {
  console.log('The condition is true so I run');
}
console.log('I run just because I come next in the script');
if (false) {
  console.log('I will never run');
}
console.log('Again, I will run'); 

Таким образом, ваш код будет автоматически выполняться после вашего if оператора. Похоже, вам нужен способ предотвратить выполнение следующего кода при некоторых обстоятельствах. Самый простой способ — использовать else .

 if (true) {
  console.log('true condition, I run');
} else {
  console.log('I do not since the preceding `if` block did');
}

if (false) {
  console.log('I will not run');
} else {
  console.log('since the condition failed, I will run');
} 

Комментарии:

1. Но моя проблема в том, что есть функции, которые должны быть в операторе if, поэтому я получу ошибки в скобках.

2. @AndrewSladky Ошибки в скобках? Это не имеет смысла. Вы можете абсолютно помещать функции внутри if операторов, если вы правильно сопоставляете скобки.