no-undef-init
不允許將變數初始化為 undefined
🔧 可修正
此規則回報的一些問題可以使用 --fix
命令列選項自動修正
在 JavaScript 中,宣告但未初始化任何值的變數會自動取得 undefined
的值。 例如:
var foo;
console.log(foo === undefined); // true
因此,將變數初始化為 undefined
是不必要的,例如:
var foo = undefined;
最佳實務是避免將變數初始化為 undefined
。
規則詳情
此規則旨在消除初始化為 undefined
的 var
和 let
變數宣告。
此規則的錯誤程式碼範例
在遊樂場開啟
/*eslint no-undef-init: "error"*/
var ;
let ;
此規則的正確程式碼範例
在遊樂場開啟
/*eslint no-undef-init: "error"*/
var foo;
let bar;
請注意,此規則不會檢查 const
宣告、解構模式、函式參數和類別欄位。
此規則的額外正確程式碼範例
在遊樂場開啟
/*eslint no-undef-init: "error"*/
const foo = undefined;
let { bar = undefined } = baz;
[quux = undefined] = quuux;
(foo = undefined) => {};
class Foo {
bar = undefined;
}
何時不該使用
有一種情況將變數初始化為 undefined
的行為與省略初始化不同,那就是在迴圈內發生 var
宣告時。例如:
此規則的錯誤程式碼範例
在遊樂場開啟
/*eslint no-undef-init: "error"*/
for (i = 0; i < 10; i++) {
var ;
console.log(x);
x = i;
}
在這種情況下,var x
會被提升到迴圈之外,實際上會建立:
var x;
for (i = 0; i < 10; i++) {
x = undefined;
console.log(x);
x = i;
}
如果您要移除初始化,則迴圈的行為會改變:
for (i = 0; i < 10; i++) {
var x;
console.log(x);
x = i;
}
此程式碼等同於:
var x;
for (i = 0; i < 10; i++) {
console.log(x);
x = i;
}
這會產生與在迴圈中定義 var x = undefined
不同的結果,因為 x
不再在每次通過迴圈時都重設為 undefined
。
如果您在迴圈內使用這樣的初始化,則應停用此規則。
此規則的正確程式碼範例,因為它在特定行被停用
在遊樂場開啟
/*eslint no-undef-init: "error"*/
for (i = 0; i < 10; i++) {
var x = undefined; // eslint-disable-line no-undef-init
console.log(x);
x = i;
}
相關規則
版本
此規則在 ESLint v0.0.6 中引入。