Back to Biomejs

noUnassignedVariables

src/content/docs/linter/rules/no-unassigned-variables.mdx

latest5.6 KB
Original Source

import { Tabs, TabItem } from '@astrojs/starlight/components';

<Tabs> <TabItem label="JavaScript (and super languages)" icon="seti:javascript"> ## Summary - Rule available since: `v2.1.0` - Diagnostic Category: [`lint/suspicious/noUnassignedVariables`](/reference/diagnostics#diagnostic-category) - This rule isn't recommended, so you need to enable it. - This rule doesn't have a fix. - The default severity of this rule is [**information**](/reference/diagnostics#information). - Sources: - Same as [`no-unassigned-vars`](https://eslint.org/docs/latest/rules/no-unassigned-vars)

How to configure

json
{
	"linter": {
		"rules": {
			"suspicious": {
				"noUnassignedVariables": "error"
			}
		}
	}
}

Description

Disallow let or var variables that are read but never assigned.

This rule flags let or var declarations that are never assigned a value but are still read or used in the code. Since these variables will always be undefined, their usage is likely a programming mistake.

Examples

Invalid

js
let status;
if (status === 'ready') {
    console.log('Status is ready');
}
<pre class="language-text"><code class="language-text">code-block.js:1:5 <a href="https://biomejs.dev/linter/rules/no-unassigned-variables">lint/suspicious/noUnassignedVariables</a> ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ <strong><span style="color: lightgreen;">ℹ</span></strong> <span style="color: lightgreen;">The variable '</span><span style="color: lightgreen;"><strong>status</strong></span><span style="color: lightgreen;">' is declared but never assigned a value.</span> <strong><span style="color: Tomato;">&gt;</span></strong> <strong>1 │ </strong>let status; <strong> │ </strong> <strong><span style="color: Tomato;">^</span></strong><strong><span style="color: Tomato;">^</span></strong><strong><span style="color: Tomato;">^</span></strong><strong><span style="color: Tomato;">^</span></strong><strong><span style="color: Tomato;">^</span></strong><strong><span style="color: Tomato;">^</span></strong> <strong>2 │ </strong>if (status === 'ready') &#123; <strong>3 │ </strong> console.log('Status is ready'); <strong><span style="color: lightgreen;">ℹ</span></strong> <span style="color: lightgreen;">Variable declared without assignment. Either assign a value or remove the declaration.</span> </code></pre>
ts
let value: number | undefined;
console.log(value);
<pre class="language-text"><code class="language-text">code-block.ts:1:5 <a href="https://biomejs.dev/linter/rules/no-unassigned-variables">lint/suspicious/noUnassignedVariables</a> ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ <strong><span style="color: lightgreen;">ℹ</span></strong> <span style="color: lightgreen;">The variable '</span><span style="color: lightgreen;"><strong>value</strong></span><span style="color: lightgreen;">' is declared but never assigned a value.</span> <strong><span style="color: Tomato;">&gt;</span></strong> <strong>1 │ </strong>let value: number | undefined; <strong> │ </strong> <strong><span style="color: Tomato;">^</span></strong><strong><span style="color: Tomato;">^</span></strong><strong><span style="color: Tomato;">^</span></strong><strong><span style="color: Tomato;">^</span></strong><strong><span style="color: Tomato;">^</span></strong><strong><span style="color: Tomato;">^</span></strong><strong><span style="color: Tomato;">^</span></strong><strong><span style="color: Tomato;">^</span></strong><strong><span style="color: Tomato;">^</span></strong><strong><span style="color: Tomato;">^</span></strong><strong><span style="color: Tomato;">^</span></strong><strong><span style="color: Tomato;">^</span></strong><strong><span style="color: Tomato;">^</span></strong><strong><span style="color: Tomato;">^</span></strong><strong><span style="color: Tomato;">^</span></strong><strong><span style="color: Tomato;">^</span></strong><strong><span style="color: Tomato;">^</span></strong><strong><span style="color: Tomato;">^</span></strong><strong><span style="color: Tomato;">^</span></strong><strong><span style="color: Tomato;">^</span></strong><strong><span style="color: Tomato;">^</span></strong><strong><span style="color: Tomato;">^</span></strong><strong><span style="color: Tomato;">^</span></strong><strong><span style="color: Tomato;">^</span></strong><strong><span style="color: Tomato;">^</span></strong> <strong>2 │ </strong>console.log(value); <strong>3 │ </strong> <strong><span style="color: lightgreen;">ℹ</span></strong> <span style="color: lightgreen;">Variable declared without assignment. Either assign a value or remove the declaration.</span> </code></pre>

Valid

js
let message = "hello";
console.log(message);

let user;
user = getUser();
console.log(user.name);

let count;
count = 0;
count++;
ts
declare let value: number | undefined;
console.log(value);

declare module "my-module" {
    let value: string;
    export = value;
}
</TabItem> </Tabs>