Выражение
(q !== "yes")||(q !== "no")
всегда будет правдивым, потому что q
не может быть одновременно yes
и no
одновременно. Если любое из условий выполнено, то while
будет верным, и цикл продолжится.
Вместо этого используйте &&
:
(q !== "yes") && (q !== "no")
Или, что еще более понятно, используйте .includes
:
while (!['yes', 'no'].includes(q)) {
let q;
while (!['yes', 'no'].includes(q)) {
q = prompt("yes or no?");
}