এখানে কেউ আমার জন্য সম্ভাব্যতার কথা উল্লেখ করেনি NaN
, যা আমার কাছে - এটিও একটি নাল - ইশ মান। সুতরাং, আমি ভেবেছিলাম আমি আমার দু'টি সেন্ট যোগ করব।
প্রদত্ত কোডের জন্য:
var a,
b = null,
c = parseInt('Not a number'),
d = 0,
e = '',
f = 1
;
আপনি যদি ||
অপারেটরটি ব্যবহার করতে চান তবে আপনি প্রথম অ-মিথ্যা মান পাবেন:
var result = a || b || c || d || e || f; // result === 1
আপনি এখানে পোস্ট হিসাবে সাধারণ coalesce পদ্ধতি ব্যবহার করেন , আপনি পাবেন c
, যার মান আছে:NaN
var result = coalesce(a,b,c,d,e,f); // result.toString() === 'NaN'
আমরাও এই আমার অধিকার বলে মনে হচ্ছে। আমার নিজস্ব সামান্য যুক্তিযুক্ত যুক্তিতে, যা আপনার জগত থেকে পৃথক হতে পারে, আমি অপরিজ্ঞাত, নাল এবং ন্যানকে সবাই "নাল-ইশ" হিসাবে বিবেচনা করি। সুতরাং, আমি d
কোলেসেস পদ্ধতি থেকে ফিরে (শূন্য) প্রত্যাশা করব ।
যদি কারও মস্তিষ্ক আমার মতো কাজ করে এবং আপনি বাদ দিতে চান NaN
তবে এই পদ্ধতিটি এটি সম্পাদন করবে:
function coalesce() {
var i, undefined, arg;
for( i=0; i < arguments.length; i++ ) {
arg = arguments[i];
if( arg !== null && arg !== undefined
&& (typeof arg !== 'number' || arg.toString() !== 'NaN') ) {
return arg;
}
}
return null;
}
যারা কোডটি যথাসম্ভব সংক্ষিপ্ত আকারে চান এবং স্বচ্ছতার কিছুটা অভাব বোধ করেন না তাদের জন্যও আপনি @ আইফিনবলের পরামর্শ অনুসারে এটি ব্যবহার করতে পারেন। এটি এই তথ্যের সুযোগ নেয় যে NaN কখনই NaN এর সমান হয় না। আপনি এখানে আরও পড়তে পারেন: NaN কেন NaN এর সমান নয়?
function coalesce() {
var i, arg;
for( i=0; i < arguments.length; i++ ) {
arg = arguments[i];
if( arg != null && arg === arg ) { //arg === arg is false for NaN
return arg;
}
}
return null;
}
x ?? y
সিনট্যাক্স এখন প্রথম পর্যায়ে প্রস্তাবের স্থিতিতে রয়েছে - নালিশ কোয়েলসিং