#javascript #do-while
#javascript #do-while
Вопрос:
Я пытаюсь что-то сделать для переменной хэшей с помощью цикла (do, while), но страница повторяет цикл каждый раз, когда я пишу цифры или символы итак, как я могу проверить, является ли результат запроса цифрой, а не какими-либо символами.
вот мой код:
function pick_number(arg)
{
var hash = "#",
set_new_hash = '';
for (var i = 0; i < arg; i )
{
for (var j = 0; j < arg; j )
{
document.body.innerHTML = hash;
console.log(hash);
}
for (var j = arg - 1; j > i ; j--)
{
document.body.innerHTML = " ";
console.log(" ");
}
document.body.innerHTML = "<br>";
}
}
var x = '';
do
{
x = pick_number(prompt("Pick a number"));
} while (typeof x != 'number');
Ответ №1:
Преобразуйте аргумент в число, затем проверьте, является ли оно NaN
:
function pick_number(arg) {
const num = Number(arg);
if (Number.isNaN(num)) {
return;
}
// rest of the code; use `num` here
}
let x;
do {
x = pick_number(prompt("Pick a number"));
} while (x === undefined);
Комментарии:
1. Я не пробовал ваш код, но что мне нужно понять, если я создам возврат, как вы делаете в -> if (number.isNaN(num)) {return;} , я думаю, что цикл сломается, так как цикл будет повторяться, если я использовал return ?
2.
while (x === undefined)
Тест приведет к продолжению цикла, если входные данные не являются числом.
Ответ №2:
Вы могли бы использовать тест регулярных выражений:
do {
x = pick_number(prompt("Pick a number"));
} while (!/^d $/.test(x));