src/content/docs/linter/rules/no-self-compare.mdx
import { Tabs, TabItem } from '@astrojs/starlight/components';
<Tabs> <TabItem label="JavaScript (and super languages)" icon="seti:javascript"> ## Summary - Rule available since: `v1.0.0` - Diagnostic Category: [`lint/suspicious/noSelfCompare`](/reference/diagnostics#diagnostic-category) - This rule is **recommended**, meaning it is enabled by default. - This rule doesn't have a fix. - The default severity of this rule is [**error**](/reference/diagnostics#error). - Sources: - Same as [`no-self-compare`](https://eslint.org/docs/latest/rules/no-self-compare) - Same as [`eq_op`](https://rust-lang.github.io/rust-clippy/master/#eq_op){
"linter": {
"rules": {
"suspicious": {
"noSelfCompare": "error"
}
}
}
}
Disallow comparisons where both sides are exactly the same.
Comparing a variable against itself is usually an error, either a typo or refactoring error. It is confusing to the reader and may potentially introduce a runtime error.
The only time you would compare a variable against itself is when you are testing for
NaN. However, it is far more appropriate to usetypeof x === 'number' && Number.isNaN(x)for that use case rather than leaving the reader of the code to determine the intent of self comparison.
if (x === x) {}
if (a.b.c() !== a.b .c()) {}