Avoid direct comparison with NaN This product is not supported for your selected
Datadog site . (
).
TRY THIS RULE ID: javascript-best-practices/use-isnan
Language: JavaScript
Severity: Error
Category: Best Practices
CWE : 570
Description In JavaScript, NaN (Not-a-Number) is a unique value that is not equal to anything, including itself. This means any direct comparison with NaN using equality (==, ===) or inequality (!=, !==) operators will always return false.
Non-Compliant Code Examples 123 == NaN ; 123 === NaN ; NaN === "abc" ; NaN == "abc" ; 123 != NaN ; 123 !== NaN ; NaN !== "abc" ; NaN != "abc" ; NaN < "abc" ; "abc" < NaN ; NaN > "abc" ; "abc" > NaN ; NaN <= "abc" ; "abc" <= NaN ; NaN >= "abc" ; "abc" >= NaN ; 123 == Number . NaN ; 123 === Number . NaN ; Number . NaN === "abc" ; Number . NaN == "abc" ; 123 != Number . NaN ; 123 !== Number . NaN ; Number . NaN !== "abc" ; Number . NaN != "abc" ; Number . NaN < "abc" ; "abc" < Number . NaN ; Number . NaN > "abc" ; "abc" > Number . NaN ; Number . NaN <= "abc" ; "abc" <= Number . NaN ; Number . NaN >= "abc" ; "abc" >= Number . NaN ; x === Number ? . NaN ; x === Number [ 'NaN' ]; Compliant Code Examples var x = NaN ; isNaN ( NaN ) === true ; isNaN ( 123 ) !== true ; Number . isNaN ( NaN ) === true ; Number . isNaN ( 123 ) !== true ; foo ( NaN + 1 ); foo ( 1 + NaN ); foo ( NaN - 1 ) foo ( 1 - NaN ) foo ( NaN * 2 ) foo ( 2 * NaN ) foo ( NaN / 2 ) foo ( 2 / NaN ) var x ; if ( x = NaN ) { } var x = Number . NaN ; isNaN ( Number . NaN ) === true ; Number . isNaN ( Number . NaN ) === true ; foo ( Number . NaN + 1 ); foo ( 1 + Number . NaN ); foo ( Number . NaN - 1 ) foo ( 1 - Number . NaN ) foo ( Number . NaN * 2 ) foo ( 2 * Number . NaN ) foo ( Number . NaN / 2 ) foo ( 2 / Number . NaN ) var x ; if ( x = Number . NaN ) { } x === Number [ NaN ]; Seamless integrations. Try Datadog Code Security