জাভাস্ক্রিপ্ট বিল্ট-ইন isNaN ফাংশন, হয় - ডিফল্ট দ্বারা আশা করা যেতে হবে - একটি "ডায়নামিক প্রকার অপারেটর"। অতএব (ডিটিসি প্রক্রিয়া চলাকালীন) সমস্ত মান একটি সাধারণ সত্য উপস্থাপন করতে পারে যেমন মিথ্যা"", " ", " 000"
, এনএন হতে পারে না।
অর্থ যে সরবরাহ করা যুক্তিটি প্রথমে যেমন রূপান্তরিত হবে :
function isNaNDemo(arg){
var x = new Number(arg).valueOf();
return x != x;
}
ব্যাখ্যা:
ফাংশন বডির শীর্ষ লাইনে আমরা (প্রথম) আর্গুমেন্টটিকে সফলভাবে একটি সংখ্যা অবজেক্টে রূপান্তরিত করার চেষ্টা করছি। এবং (দ্বিতীয়) ডট অপারেটরটি ব্যবহার করে আমরা - আমাদের নিজস্ব সুবিধার্থে - তৈরি হওয়া অবজেক্টটির আদিম মান তত্ক্ষণাত বন্ধ করে দেওয়া ।
দ্বিতীয় লাইনে আমরা পূর্ববর্তী পদক্ষেপে প্রাপ্ত মানটি নিয়ে চলেছি, এবং এনএএন মহাবিশ্বের কোনও কিছুর সমান নয়, এমনকি নিজেরও নয়, যেমন সুবিধা:NaN == NaN >> false
সর্বশেষে এটির সাথে (বৈষম্যের জন্য) তুলনা করা ।
এইভাবে ফাংশন রিটার্নটি কেবল তখনই ফলপ্রসূ হবে যখন কেবল সরবরাহিত আর্গুমেন্ট-রিটার্ন কোনও সংখ্যার অবজেক্টে রূপান্তর করার ব্যর্থ প্রচেষ্টা, অর্থাত্, একটি সংখ্যা নয়; যেমন, এনএএন
# ননস্ট্যাটিক ()
তবে, স্ট্যাটিক টাইপ অপারেটরের জন্য - প্রয়োজন হলে এবং যখন প্রয়োজন হয় - আমরা অনেক সহজ ফাংশন লিখতে পারি যেমন:
function isNaNstatic(x){
return x != x;
}
এবং সম্পূর্ণরূপে ডিটিসি এড়িয়ে চলুন যাতে যুক্তিটি সুস্পষ্টভাবে একটি এনএন নম্বর না করা হয় তবে এটি মিথ্যা বলে প্রত্যাবর্তন করবে। সুতরাং, নিম্নলিখিতগুলির বিরুদ্ধে পরীক্ষা করা:
isNaNStatic(" x"); // will return false
কারণ এটি এখনও একটি স্ট্রিং
তবে:
isNaNStatic(1/"x"); // will of course return true.
উদাহরণস্বরূপ হিসাবেisNaNStatic(NaN); >> true
।
তবে এর বিপরীতে isNaN
, isNaNStatic("NaN"); >> false
কারণ এটি (যুক্তি) একটি সাধারণ স্ট্রিং।
পিএস: ইসডন এর স্ট্যাটিক সংস্করণটি আধুনিক কোডিং দৃশ্যে খুব কার্যকর হতে পারে। এবং এটি পোস্ট করার জন্য আমার সময় নিয়ে যাওয়া অন্যতম প্রধান কারণ হতে পারে।
শুভেচ্ছা।