برنامه نویسی

JavaScript NaN – سوال مصاحبه پیشرفته JS

Summarize this content to 400 words in Persian Lang
در جاوا اسکریپت، NaN به معنای «عدد نیست». اگر بدوید

typeof NaN // number

شما “عدد” را دریافت خواهید کرد زیرا NaN برای تعریف عددی استفاده می شود که واقعا عدد نیست.

بسیاری از اوقات هنگام کدنویسی باید مطمئن شویم که نوع داده ای که با آن کار می کنیم در واقع یک عدد است. JS یک متد داخلی به نام isNaN دارد که هر ورودی را می پذیرد و اگر عددی نباشد به شما اطلاع می دهد. بیایید به چند مثال نگاهی بیندازیم:

isNaN(1) // false 1 is not not a number

isNaN(“A”) // true “A” is not number

isNaN(“1”) // false “1” is not not a number ….. wait what?

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

رشته “1” یک عدد است؟ این چیزی است که JS به ما می گوید. اما هر چیزی که در گیومه باشد مطمئناً یک عدد نیست زیرا هر چیزی که در گیومه باشد یک است رشته. اگر بدوید typeof “1” رشته را دریافت خواهید کرد. چیزی که در اینجا باید فهمید این است که isNaN در حال انجام اجبار ضمنی “پشت صحنه” است. ابتدا شماره (“1”) را فراخوانی می کند که “1” را به 1 تبدیل می کند و سپس isNaN(1) را اجرا می کند.

isNaN(Number(“1”)) // false because it is a number now that it’s been coerced.

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

عالی است، بنابراین اساسا isNaN چندان مفید نخواهد بود مگر اینکه 100% از نوع ورودی مطمئن باشیم، اما در یک زبان تایپ پویا، چگونه می توانید واقعاً مطمئن باشید؟ دقیقاً به همین دلیل است که ما به یک روش بی‌خبر برای بررسی نیاز داریم. آیا راهی وجود دارد که ضمانت که برخی از ورودی ها واقعا یک عدد نیستند؟ بله، و ما واقعاً می‌توانیم با نشان دادن درک عمیق خود از JS، مصاحبه‌کنندگان خود را تحت تأثیر قرار دهیم.

اولاً، در JS، هر چیزی در مقایسه با خودش درست است.

a = 1;
a === a; //true
b = “B”;
b === b; // true

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

و NaN در مقایسه با هر چیز دیگری نادرست خواهد بود.

NaN === 1 // false
NaN === false // false
NaN === “b” // false

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

خوب. تا اینجای کار خیلی خوبه. این کاملا منطقی است. بنابراین NaN در مقایسه با خودش درست است، درست است؟ جواب منفی.

NaN === NaN //false

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

چی؟ خوب، عجیب است، اما آیا می‌توانیم از این به نفع خود استفاده کنیم تا اطمینان حاصل کنیم که چیزی یک عدد است؟ اگر بدانیم که فقط در این یک موقعیت از NaN بودن چیزی، مقایسه با خودش شکست می‌خورد، می‌توانیم به سادگی هر متغیر مورد نظر را با عملگر !== با خودش مقایسه کنیم و اگر “true” را دریافت کنیم، می‌دانیم که ورودی ما NaN است. .

a = 1
a !== a // false because 1 === 1

a = NaN
a !== a // true

وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

اگر ‘a’ چیزی غیر از NaN باشد، !== خواهد بود همیشه دروغ باشد اما به دلیل این حقیقت عجیب که NaN === NaN نادرست است، a !== a درست خواهد بود.

دانش عمیق شما از عملکرد درونی JS مطمئناً تحت تأثیر قرار خواهد گرفت! حالا از Number.isNaN() استفاده کنید. بسیار خواندنی تر و قابل درک تر است.

در جاوا اسکریپت، NaN به معنای «عدد نیست». اگر بدوید

typeof NaN // number

شما “عدد” را دریافت خواهید کرد زیرا NaN برای تعریف عددی استفاده می شود که واقعا عدد نیست.

بسیاری از اوقات هنگام کدنویسی باید مطمئن شویم که نوع داده ای که با آن کار می کنیم در واقع یک عدد است. JS یک متد داخلی به نام isNaN دارد که هر ورودی را می پذیرد و اگر عددی نباشد به شما اطلاع می دهد. بیایید به چند مثال نگاهی بیندازیم:

isNaN(1)    // false   1 is not not a number

isNaN("A")   // true   "A" is not number

isNaN("1")   // false  "1" is not not a number ..... wait what? 
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

رشته “1” یک عدد است؟ این چیزی است که JS به ما می گوید. اما هر چیزی که در گیومه باشد مطمئناً یک عدد نیست زیرا هر چیزی که در گیومه باشد یک است رشته. اگر بدوید typeof "1" رشته را دریافت خواهید کرد. چیزی که در اینجا باید فهمید این است که isNaN در حال انجام اجبار ضمنی “پشت صحنه” است. ابتدا شماره (“1”) را فراخوانی می کند که “1” را به 1 تبدیل می کند و سپس isNaN(1) را اجرا می کند.

isNaN(Number("1"))    // false because it is a number now that it's been coerced.
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

عالی است، بنابراین اساسا isNaN چندان مفید نخواهد بود مگر اینکه 100% از نوع ورودی مطمئن باشیم، اما در یک زبان تایپ پویا، چگونه می توانید واقعاً مطمئن باشید؟ دقیقاً به همین دلیل است که ما به یک روش بی‌خبر برای بررسی نیاز داریم. آیا راهی وجود دارد که ضمانت که برخی از ورودی ها واقعا یک عدد نیستند؟ بله، و ما واقعاً می‌توانیم با نشان دادن درک عمیق خود از JS، مصاحبه‌کنندگان خود را تحت تأثیر قرار دهیم.

اولاً، در JS، هر چیزی در مقایسه با خودش درست است.

a = 1;
a === a;   //true 
b = "B";
b === b;   // true
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

و NaN در مقایسه با هر چیز دیگری نادرست خواهد بود.

NaN === 1   // false  
NaN === false    // false
NaN === "b"   // false


وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

خوب. تا اینجای کار خیلی خوبه. این کاملا منطقی است. بنابراین NaN در مقایسه با خودش درست است، درست است؟ جواب منفی.

NaN === NaN    //false
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

چی؟ خوب، عجیب است، اما آیا می‌توانیم از این به نفع خود استفاده کنیم تا اطمینان حاصل کنیم که چیزی یک عدد است؟ اگر بدانیم که فقط در این یک موقعیت از NaN بودن چیزی، مقایسه با خودش شکست می‌خورد، می‌توانیم به سادگی هر متغیر مورد نظر را با عملگر !== با خودش مقایسه کنیم و اگر “true” را دریافت کنیم، می‌دانیم که ورودی ما NaN است. .

a = 1
a !== a  // false because 1 === 1

a = NaN
a !== a   // true
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

اگر ‘a’ چیزی غیر از NaN باشد، !== خواهد بود همیشه دروغ باشد اما به دلیل این حقیقت عجیب که NaN === NaN نادرست است، a !== a درست خواهد بود.

دانش عمیق شما از عملکرد درونی JS مطمئناً تحت تأثیر قرار خواهد گرفت! حالا از Number.isNaN() استفاده کنید. بسیار خواندنی تر و قابل درک تر است.

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا