init-declarations
要求或禁止在變數宣告中初始化
❄️ 已凍結
此規則目前為凍結狀態,不接受功能請求。
在 JavaScript 中,變數可以在宣告期間賦值,也可以在之後的任何時間點使用賦值語句賦值。例如,在以下程式碼中,foo
在宣告期間初始化,而 bar
稍後才初始化。
let foo = 1;
let bar;
if (foo) {
bar = 1;
} else {
bar = 2;
}
規則詳情
此規則旨在強制或消除宣告期間的變數初始化。例如,在以下程式碼中,foo
在宣告期間初始化,而 bar
則否。
let foo = 1;
let bar;
bar = 2;
此規則旨在使變數初始化和宣告保持一致性。
選項
此規則接受兩個選項
- 一個字串,必須是
"always"
(預設值),以強制在宣告時初始化,或是"never"
以禁止在宣告期間初始化。此規則適用於var
、let
和const
變數,但是"never"
對於const
變數會被忽略,因為未賦值的const
會產生語法錯誤。 - 一個物件,用於進一步控制此規則的行為。目前,唯一可用的參數是
ignoreForLoopInit
,它指示當設定為"never"
時,是否允許在for
迴圈中進行宣告時初始化,因為這是一個非常典型的用例。
您可以如下設定規則
變數必須在宣告時初始化(預設)
{
"init-declarations": ["error", "always"],
}
變數不得在宣告時初始化
{
"init-declarations": ["error", "never"]
}
變數不得在宣告時初始化,但在 for 迴圈中除外,其中允許初始化
{
"init-declarations": ["error", "never", { "ignoreForLoopInit": true }]
}
always
對於預設 "always"
選項的錯誤程式碼範例
在 Playground 中開啟
/*eslint init-declarations: ["error", "always"]*/
function foo() {
var ;
let ;
}
對於預設 "always"
選項的正確程式碼範例
在 Playground 中開啟
/*eslint init-declarations: ["error", "always"]*/
function foo() {
var bar = 1;
let baz = 2;
const qux = 3;
}
never
對於 "never"
選項的錯誤程式碼範例
在 Playground 中開啟
/*eslint init-declarations: ["error", "never"]*/
function foo() {
var ;
let ;
for (let ; i < 1; i++) {}
}
對於 "never"
選項的正確程式碼範例
在 Playground 中開啟
/*eslint init-declarations: ["error", "never"]*/
function foo() {
var bar;
let baz;
const buzz = 1;
}
"never"
選項會忽略 const
變數初始化。
ignoreForLoopInit
對於 "never", { "ignoreForLoopInit": true }
選項的正確程式碼範例
在 Playground 中開啟
/*eslint init-declarations: ["error", "never", { "ignoreForLoopInit": true }]*/
for (let i = 0; i < 1; i++) {}
何時不該使用
當您對於變數如何初始化無所謂時。
版本
此規則在 ESLint v1.0.0-rc-1 中引入。