@@ -839,14 +839,14 @@ function createComparator (name, func) {
839839 const b = runOptimizedOrFallback ( args [ 1 ] , engine , context , above )
840840 if ( strict || ( typeof a === 'string' && typeof b === 'string' ) ) return func ( a , b )
841841 if ( Number . isNaN ( + precoerceNumber ( a ) ) ) throw NaN
842- if ( Number . isNaN ( + precoerceNumber ( b ) ) ) throw NaN
842+ if ( Number . isNaN ( + precoerceNumber ( b ) ) && a !== null ) throw NaN
843843 return func ( + a , + b )
844844 }
845845 let prev = runOptimizedOrFallback ( args [ 0 ] , engine , context , above )
846846 for ( let i = 1 ; i < args . length ; i ++ ) {
847847 const current = runOptimizedOrFallback ( args [ i ] , engine , context , above )
848848 if ( strict || ( typeof current === 'string' && typeof prev === 'string' ) ) if ( ! func ( prev , current ) ) return false
849- if ( Number . isNaN ( + precoerceNumber ( current ) ) ) throw NaN
849+ if ( Number . isNaN ( + precoerceNumber ( current ) ) && prev !== null ) throw NaN
850850 if ( i === 1 && Number . isNaN ( + precoerceNumber ( prev ) ) ) throw NaN
851851 if ( ! func ( + prev , + current ) ) return false
852852 prev = current
@@ -860,14 +860,14 @@ function createComparator (name, func) {
860860 const b = await runOptimizedOrFallback ( args [ 1 ] , engine , context , above )
861861 if ( strict || ( typeof a === 'string' && typeof b === 'string' ) ) return func ( a , b )
862862 if ( Number . isNaN ( + precoerceNumber ( a ) ) ) throw NaN
863- if ( Number . isNaN ( + precoerceNumber ( b ) ) ) throw NaN
863+ if ( Number . isNaN ( + precoerceNumber ( b ) ) && a !== null ) throw NaN
864864 return func ( + a , + b )
865865 }
866866 let prev = await runOptimizedOrFallback ( args [ 0 ] , engine , context , above )
867867 for ( let i = 1 ; i < args . length ; i ++ ) {
868868 const current = await runOptimizedOrFallback ( args [ i ] , engine , context , above )
869869 if ( strict || ( typeof current === 'string' && typeof prev === 'string' ) ) if ( ! func ( prev , current ) ) return false
870- if ( Number . isNaN ( + precoerceNumber ( current ) ) ) throw NaN
870+ if ( Number . isNaN ( + precoerceNumber ( current ) ) && prev !== null ) throw NaN
871871 if ( i === 1 && Number . isNaN ( + precoerceNumber ( prev ) ) ) throw NaN
872872 if ( ! func ( + prev , + current ) ) return false
873873 prev = current
0 commit comments