কেন ম্যাথ.মিন একটি এক উপাদান অ্যারের সাথে কাজ করে


17

এমডিএন অনুসারে ম্যাথ.মিন কেবলমাত্র সংখ্যা গ্রহণ করে এবং যুক্তিগুলির মধ্যে একটি যদি সংখ্যা না হয় তবে এটি ফিরে আসবে NaN। এটা যে যদি আমরা একাধিক সংখ্যার একটি অ্যারের পাস আমরা পেতে সত্য NaN, এরকম: Math.min([1,2])কিন্তু আমরা যদি শুধু একটা সংখ্যা দিয়ে একটি অ্যারের ব্যবহার করেন, Math.minএই উদাহরণে অ্যারের মধ্যে নম্বর ফিরে আসবো, মত: Math.min([5])। কারও কি ধারণা আছে যে আমরা কেন এই অনিবন্ধিত আচরণটি দেখি?


উত্তর:


47

এমডিএন অনুসারে Math.minকেবল সংখ্যাগুলি গ্রহণ করে, এবং কোনও একটি যুক্তি যদি সংখ্যা না হয় তবে তা ফিরে আসবে NaN

এটি যা বলে তা নয় ( সাহসী জোর আমার):

যদি কমপক্ষে একটি যুক্তি একটি সংখ্যায় রূপান্তর করা না যায় তবে ফলাফল হয় NaN

প্রকার রূপান্তর:

  • Math.minToNumberএর আর্গুমেন্ট রূপান্তর করতে ব্যবহার করে।
  • ToNumberগুলি (এবং গুলি গুলি) ToPrimitiveরূপান্তর করতে ব্যবহার করে ।ObjectArrayObject
  • ToPrimitive ব্যবহারসমূহ toString
  • [5].toString()এটি '5', যা এতে ফিরে আসে ToPrimitive, যা এতে ফিরে আসে ToNumber, যা এটিকে পার্স করে 5এবং এটিকে ফেরত দেয় Math.min, যার জন্য এটি একটি বৈধ যুক্তি, কারণ এটি তা নয় NaN
  • [1, 2].toString(), OTOH, '1, 2'যা আবার ফিরে আসে ToPrimitive, যা এটিকে ফেরত দেয় ToNumber, যা এতে পার্স করে NaN, কারণ এটি কোনও বৈধ সংখ্যার উপস্থাপনা নয়। ToNumberতারপরে চলে NaNযায় Math.min, যা তারপরে ফিরে আসবে NaN, কারণ (এমডিএন হিসাবে এটি বলা হয়েছে) "এর একটি যুক্তি একটি সংখ্যায় রূপান্তর করা যায় না" বা (যেমনটি অনুমান হিসাবে বলা হয়েছে) "যদি কোনও মান এনএন হয়, তবে ফলাফলটি এনএএন হয়"।

25
ECMAScript স্পেকটি আসলে আশ্চর্যজনকভাবে পঠনযোগ্য, আমি সন্ধান করেছি found
Jörg ডব্লু মিট্যাগ

3
হ্যাঁ. Number([1,2]);NaN কিন্তু ফলাফল Number([1])ফলাফল 1.
Bhojendra Rauniyar
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.