src/content/docs/linter/rules/use-is-array.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/useIsArray`](/reference/diagnostics#diagnostic-category) - This rule is **recommended**, meaning it is enabled by default. - This rule has an [**unsafe**](/linter/#unsafe-fixes) fix. - The default severity of this rule is [**warning**](/reference/diagnostics#warning). - Sources: - Same as [`unicorn/no-instanceof-array`](https://github.com/sindresorhus/eslint-plugin-unicorn/blob/main/docs/rules/no-instanceof-array.md){
"linter": {
"rules": {
"suspicious": {
"useIsArray": "error"
}
}
}
}
Use Array.isArray() instead of instanceof Array.
In JavaScript some array-like objects such as arguments are not instances of the Array class. ///
Moreover, the global Array class can be different between two execution contexts.
For instance, two frames in a web browser have a distinct Array class.
Passing arrays across these contexts, results in arrays that are not instances of the contextual global Array class.
To avoid these issues, use Array.isArray() instead of instanceof Array.
See the MDN docs for more details.
const xs = [];
if (xs instanceof Array) {}
const xs = [];
if (Array.isArray(xs)) {}