আমাকে একটি রুটিন লিখতে হয়েছিল যা ভেরিয়েবলের টাইপ হলে এর মান 1 বৃদ্ধি করে numberএবং 0 না করে ভেরিয়েবলের জন্য নির্ধারিত হয়, যেখানে ভেরিয়েবলটি প্রাথমিকভাবে হয় nullবা হয় undefined।
প্রথম বাস্তবায়ন ছিল v >= 0 ? v += 1 : v = 0কারণ আমি ভেবেছিলাম যে কোনও কিছু নয় কিছু গণিতের প্রকাশকে মিথ্যা বানাবে, তবে এটি null >= 0সত্য ছিল যেহেতু সত্য হিসাবে মূল্যায়ন করা হয়। তারপরে আমি null0 টির মতো আচরণ শিখেছি এবং নিম্নলিখিত এক্সপ্রেশনগুলি সমস্ত সত্যকে মূল্যায়ন করা হয়।
null >= 0 && null <= 0!(null < 0 || null > 0)null + 1 === 11 / null === InfinityMath.pow(42, null) === 1
অবশ্যই, null0 নয় null == 0এটি মিথ্যা হিসাবে মূল্যায়ন করা হয়। এটি আপাতদৃষ্টিতে টোটোলজিক্যাল এক্সপ্রেশনটিকে (v >= 0 && v <= 0) === (v == 0)মিথ্যা করে তোলে ।
null0 এর মতো কেন , যদিও এটি আসলে 0 নয়?
nullবা বর্ধিত কাউন্টারগুলির জন্য সত্যিই অতি ক্ষুদ্র উপায় রয়েছে undefined:c = -~c // Results in 1 for null/undefined; increments if already a number
undefinedএকটি চলক মান, ভেরিয়েবলের জন্য যা আরম্ভ করা হয়নি for nullঅন্যদিকে, এটি একটি খালি অবজেক্ট মান, এবং সংখ্যার সাথে মিশ্রিত করা উচিত নয়। nullসংখ্যার সাথে একত্রিত করা উচিত নয়, সুতরাং নালকে সংখ্যার মতো আচরণ করা উচিত নয়।