no-global-assign
不允許賦值給原生物件或唯讀全域變數
✅ 推薦
在設定檔中使用來自 @eslint/js
的 recommended
設定會啟用此規則
JavaScript 環境包含許多內建的全域變數,例如瀏覽器中的 window
和 Node.js 中的 process
。在幾乎所有情況下,您都不希望為這些全域變數賦值,因為這樣做可能會導致失去對重要功能的存取權。例如,您可能不希望在瀏覽器程式碼中執行此操作
window = {};
雖然像 window
這樣的範例很明顯,但 JavaScript 環境通常提供數百個內建全域物件。可能很難知道您是否正在賦值給全域變數。
規則詳情
此規則不允許修改唯讀全域變數。
ESLint 具有將全域變數設定為唯讀的功能。
另請參閱:指定全域變數
此規則的錯誤程式碼範例
在 Playground 中開啟
/*eslint no-global-assign: "error"*/
= null
= 1
在 Playground 中開啟
/*eslint no-global-assign: "error"*/
/*global window:readonly*/
= {}
此規則的正確程式碼範例
在 Playground 中開啟
/*eslint no-global-assign: "error"*/
a = 1
var b = 1
b = 2
在 Playground 中開啟
/*eslint no-global-assign: "error"*/
/*global onload:writable*/
onload = function() {}
選項
此規則接受 exceptions
選項,可用於指定允許重新賦值的內建項目清單
{
"rules": {
"no-global-assign": ["error", {"exceptions": ["Object"]}]
}
}
何時不該使用
如果您嘗試覆寫其中一個原生物件。
相關規則
版本
此規則在 ESLint v3.3.0 中引入。