මෙහි විභවය කිසිවෙකු මෙහි සඳහන් කර නැත 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
මෙහි පළ කර ඇති පරිදි ඔබ සාමාන්ය සිසිලන ක්රමය භාවිතා කරන්නේ නම් , ඔබට ලැබෙනු ඇත c
, එහි වටිනාකම ඇත:NaN
var result = coalesce(a,b,c,d,e,f); // result.toString() === 'NaN'
මේ දෙකම මට ගැලපෙන්නේ නැත . ඔබේ ලෝකයට වඩා වෙනස් විය හැකි මගේම කුඩා ලෝකය තුළ, නිර්වචනය නොකළ, ශූන්ය සහ 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;
}
කේතය හැකිතාක් කෙටි කිරීමට අවශ්ය අයට, සහ පැහැදිළි බවක් නොමැති නම්, ඔබට @impinball යෝජනා කළ පරිදි මෙය භාවිතා කළ හැකිය. 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
වාක්ය ඛණ්ඩය