Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 18.07.2015, 23:15
Новичок на форуме
Отправить личное сообщение для Aleks123 Посмотреть профиль Найти все сообщения от Aleks123
 
Регистрация: 18.07.2015
Сообщений: 2

Объясните пожалуйста специфику конструкции
Прошу помочь с пониманием следующего момента:

Необходимо чтобы появлялось окно prompt до тех пор пока не будет введен один из вариантов верного текста. Если будет только одно условие, то сработает корректно. Пример:
do {
	var a = prompt("Ввод текста");
} while (a != "текст");


Когда будет введен "текст" цикл закончит выполнение. Но необходимо несколько условий, пишу так:
do {
	var a = prompt("Ввод текста");
} while (a != "текст" || a != "текст2");


Цикл получается бесконечным. Опытным путем заменил оператор или на и:
do {
	var a = prompt("Ввод текста");
} while (a != "текст" && a != "текст2");


Начало срабатывать, но немогу понять почему?
Ответить с цитированием
  #2 (permalink)  
Старый 18.07.2015, 23:30
Профессор
Отправить личное сообщение для Decode Посмотреть профиль Найти все сообщения от Decode
 
Регистрация: 31.01.2015
Сообщений: 576

do {
    var a = prompt("Ввод текста");
} while (a != "текст" || a != "текст2");


Если в переменной a будет значение 'текст' — оператор ИЛИ "пойдет" направо и увидит там "текст2". Соответственно условие будет верным.

Последний раз редактировалось Decode, 18.07.2015 в 23:33.
Ответить с цитированием
  #3 (permalink)  
Старый 18.07.2015, 23:33
Новичок на форуме
Отправить личное сообщение для Aleks123 Посмотреть профиль Найти все сообщения от Aleks123
 
Регистрация: 18.07.2015
Сообщений: 2

Думал над этим около двух часов. Стоило зарегистрироваться и создать тему на форуме как понимание резко пришло, посмотрел на это немного под другим углом: while будет выполнять до тех пор пока выражение в скобках = true, а при или оно получается таковым всегда.

Да, спасибо, пока набирал свое сообщение вы уже ответили.
Ответить с цитированием
  #4 (permalink)  
Старый 19.07.2015, 00:03
Аватар для Makarov
Профессор
Отправить личное сообщение для Makarov Посмотреть профиль Найти все сообщения от Makarov
 
Регистрация: 08.07.2013
Сообщений: 212

Aleks123,
это вообще замечательный способ) Как только у меня какая-то проблема с которой долго туплю, я открываю so и начинаю писать туда вопрос, большинство вопросов отпадают сразу или через 5 минут после того как кнопку "отправить" жмешь. Метод утенка называется.
Ответить с цитированием
  #5 (permalink)  
Старый 19.07.2015, 09:19
Профессор
Отправить личное сообщение для kostyanet Посмотреть профиль Найти все сообщения от kostyanet
 
Регистрация: 23.10.2010
Сообщений: 2,718

Не обязательно циклить, рекурсии должно хватить

function GuessText(p,a){
  if(a!="foo" && a!="bar" && a!="baz"){
    a=prompt(p||"Ввод текста",a||"");
    return GuessText("Введите правильный текст",a);
  }
  else
    return a;
}

var some=GuessText();
some;
/*
bar
*/
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Объясните пожалуйста imediasun1 Элементы интерфейса 0 23.03.2013 16:59
Объясните, пожалуйста мне, что такое значение reference dump Общие вопросы Javascript 1 21.07.2012 18:31
Пожалуйста, объясните что мне сделать с этим... someLogin Events/DOM/Window 2 16.10.2011 22:47
Объясните пожалуйста как обратится к функции и получить результат zeraid AJAX и COMET 4 03.04.2011 14:55
Объясните пожалуйста значение символов после переменной Анатолий Общие вопросы Javascript 1 09.01.2009 03:50