حالت آفلاین — محتوا از حافظهٔ کش نمایش داده می‌شود
آموزش جاوااسکریپت تکمیلی؛ توابع و پردازش داده

اعتبارسنجی عدد در جاوااسکریپت؛ جمع بدون تبدیل ناخواسته

داده ناقص و اعتبارسنجی امن در جاوااسکریپت · 0٪

✍️ ظاهر عددی یک مقدار تضمین نمی‌کنه که واقعاً عدد باشد. رشته '20' با عدد 20 فرق دارد. اگر یک رشته وارد جمع با + بشه، ممکنه به جای جمع عددی، چسباندن متن اتفاق بیفته. null، false و رشته خالی هم با بعضی تبدیل‌ها به صفر تبدیل می‌شن؛ این تبدیل همیشه خواسته ما نیست.

برای پذیرش فقط عددهای متناهی، Number.isFinite ابزار مناسبی است. این متد رشته‌ها را به عدد تبدیل نمی‌کنه و مقدارهای نامعتبر عددی مثل NaN و بی‌نهایت را هم رد می‌کنه. در محیط JSON معمولی، این دو مقدار آخر مستقیم به عنوان داده ورودی نمی‌آیند؛ ولی عادت به بررسی متناهی بودن، قرارداد محاسبه را روشن نگه می‌داره.

در تمرین، عدد منفی و صفر معتبرند. فقط مقدارهایی را جمع کن که از قبل نوع عددی دارند و متناهی‌اند. خطای رایج، استفاده از Number(value) برای همه عضوهاست؛ این کار رشته عددی را هم قبول می‌کنه، در حالی که قرارداد ما آن را رد می‌کنه. خروجی خالی یا فهرست کاملاً نامعتبر باید صفر باشد.

فعالیت شما

sumValidNumbers(values) را بنویس. values آرایه مقدارهای JSON است. فقط عضوهایی با typeof برابر 'number' و Number.isFinite برابر true را جمع کن؛ صفر و منفی معتبرند و تبدیل نوع ممنوع است. [2,'3',null,-1] => 1، خالی یا فقط مقدار نامعتبر => 0.

مطالعهٔ این گام برای همه آزاد است

برای پاسخ‌دادن، بررسی پاسخ، ثبت پیشرفت و استفاده از دستیار باید شرایط شرکت در فعالیت‌ها را داشته باشید.

برای انجام فعالیت وارد شوید

فعالیت‌های این بخش به اشتراک فعال نیاز دارند. تهیهٔ اشتراک

برای انجام فعالیت‌ها ابتدا این دوره‌های پیش‌نیاز را تکمیل کنید:

کد اولیهٔ فعالیت

function sumValidNumbers(values) {
  // TODO: فقط عددهای متناهی واقعی را انتخاب و جمع کن.
}