بازگشت به درس

تا زمانی که ورودی یک عدد است تکرار کن

اهمیت: 5

یک تابع readNumber بسازید که تا زمانی که بازدیدکننده یک عدد وارد نکرده باشد، نرود.

خروجی به فرمت عدد باید باشد.

بازدید کننده میتواند با وارد کردن یک خط خالی یا فشردن دکمه‌ی “CANCEL” پردازش را متوقف کند. در این حالت، تابع خروجی null را می‌دهد. [demo]

باز کردن یک sandbox همراه با تست‌ها.

function readNumber() {
  let num;

  do {
    num = prompt("Enter a number please?", 0);
  } while ( !isFinite(num) );

  if (num === null || num === '') return null;

  return +num;
}

alert(`Read: ${readNumber()}`);

جواب اندکی پیچیده‌ست که به خاطر این است که باید null/خالی را هم در نظر بگیریم.

پس ما تا وقتی ورودی را می‌پذیریم که عدد عادی باشد. هردوی null (cancel) و خط خالی هم در این شرایط میگنجد، چونکه در فرم عددی صفر هستند.

بعد از اینکه برنامه متوقف شد بایستی null و مخصوصا خط‌های خالی (خروجی null) را در نظر بگیریم، چون تبدیل آنها به عدد صفر برمی‌گرداند.

باز کردن راه‌حل همراه با تست‌ها درون یک sandbox.