mirror of
				https://git.proxmox.com/git/pve-eslint
				synced 2025-11-04 04:48:24 +00:00 
			
		
		
		
	includes a (minimal) working wrapper Signed-off-by: Dominik Csapak <d.csapak@proxmox.com>
		
			
				
	
	
		
			132 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			132 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
# require or disallow initialization in variable declarations (init-declarations)
 | 
						|
 | 
						|
In JavaScript, variables can be assigned during declaration, or at any point afterwards using an assignment statement. For example, in the following code, `foo` is initialized during declaration, while `bar` is initialized later.
 | 
						|
 | 
						|
```js
 | 
						|
var foo = 1;
 | 
						|
var bar;
 | 
						|
 | 
						|
if (foo) {
 | 
						|
    bar = 1;
 | 
						|
} else {
 | 
						|
    bar = 2;
 | 
						|
}
 | 
						|
```
 | 
						|
 | 
						|
## Rule Details
 | 
						|
 | 
						|
This rule is aimed at enforcing or eliminating variable initializations during declaration. For example, in the following code, `foo` is initialized during declaration, while `bar` is not.
 | 
						|
 | 
						|
```js
 | 
						|
var foo = 1;
 | 
						|
var bar;
 | 
						|
 | 
						|
bar = 2;
 | 
						|
```
 | 
						|
 | 
						|
This rule aims to bring consistency to variable initializations and declarations.
 | 
						|
 | 
						|
## Options
 | 
						|
 | 
						|
The rule takes two options:
 | 
						|
 | 
						|
1. A string which must be either `"always"` (the default), to enforce initialization at declaration, or `"never"` to disallow initialization during declaration. This rule applies to `var`, `let`, and `const` variables, however `"never"` is ignored for `const` variables, as unassigned `const`s generate a parse error.
 | 
						|
2. An object that further controls the behavior of this rule. Currently, the only available parameter is `ignoreForLoopInit`, which indicates if initialization at declaration is allowed in `for` loops when `"never"` is set, since it is a very typical use case.
 | 
						|
 | 
						|
You can configure the rule as follows:
 | 
						|
 | 
						|
Variables must be initialized at declaration (default)
 | 
						|
 | 
						|
```json
 | 
						|
{
 | 
						|
    "init-declarations": ["error", "always"],
 | 
						|
}
 | 
						|
```
 | 
						|
 | 
						|
Variables must not be initialized at declaration
 | 
						|
 | 
						|
```json
 | 
						|
{
 | 
						|
    "init-declarations": ["error", "never"]
 | 
						|
}
 | 
						|
```
 | 
						|
 | 
						|
Variables must not be initialized at declaration, except in for loops, where it is allowed
 | 
						|
 | 
						|
```json
 | 
						|
{
 | 
						|
    "init-declarations": ["error", "never", { "ignoreForLoopInit": true }]
 | 
						|
}
 | 
						|
```
 | 
						|
 | 
						|
### always
 | 
						|
 | 
						|
Examples of **incorrect** code for the default `"always"` option:
 | 
						|
 | 
						|
```js
 | 
						|
/*eslint init-declarations: ["error", "always"]*/
 | 
						|
/*eslint-env es6*/
 | 
						|
 | 
						|
function foo() {
 | 
						|
    var bar;
 | 
						|
    let baz;
 | 
						|
}
 | 
						|
```
 | 
						|
 | 
						|
Examples of **correct** code for the default `"always"` option:
 | 
						|
 | 
						|
```js
 | 
						|
/*eslint init-declarations: ["error", "always"]*/
 | 
						|
/*eslint-env es6*/
 | 
						|
 | 
						|
function foo() {
 | 
						|
    var bar = 1;
 | 
						|
    let baz = 2;
 | 
						|
    const qux = 3;
 | 
						|
}
 | 
						|
```
 | 
						|
 | 
						|
### never
 | 
						|
 | 
						|
Examples of **incorrect** code for the `"never"` option:
 | 
						|
 | 
						|
```js
 | 
						|
/*eslint init-declarations: ["error", "never"]*/
 | 
						|
/*eslint-env es6*/
 | 
						|
 | 
						|
function foo() {
 | 
						|
    var bar = 1;
 | 
						|
    let baz = 2;
 | 
						|
 | 
						|
    for (var i = 0; i < 1; i++) {}
 | 
						|
}
 | 
						|
```
 | 
						|
 | 
						|
Examples of **correct** code for the `"never"` option:
 | 
						|
 | 
						|
```js
 | 
						|
/*eslint init-declarations: ["error", "never"]*/
 | 
						|
/*eslint-env es6*/
 | 
						|
 | 
						|
function foo() {
 | 
						|
    var bar;
 | 
						|
    let baz;
 | 
						|
    const buzz = 1;
 | 
						|
}
 | 
						|
```
 | 
						|
 | 
						|
The `"never"` option ignores `const` variable initializations.
 | 
						|
 | 
						|
### ignoreForLoopInit
 | 
						|
 | 
						|
Examples of **correct** code for the `"never", { "ignoreForLoopInit": true }` options:
 | 
						|
 | 
						|
```js
 | 
						|
/*eslint init-declarations: ["error", "never", { "ignoreForLoopInit": true }]*/
 | 
						|
for (var i = 0; i < 1; i++) {}
 | 
						|
```
 | 
						|
 | 
						|
## When Not To Use It
 | 
						|
 | 
						|
When you are indifferent as to how your variables are initialized.
 |