unicorn/prefer-global-this
Require globalThis instead of window, self and global
has suggestions
A worker has no window, a browser has no global, and Node.js has no self. Code that names one of them throws a ReferenceError where it doesn't exist. globalThis is the same object and exists everywhere.
Properties that only make sense on one of them are allowed, such as window.innerWidth, window.addEventListener("resize", ...) and self.postMessage(). Computed access such as window[name] is allowed too, and so is your own variable with one of these names.
Configure#
Off by default. To turn it on:
bunfig.toml
[lint.rules]
"unicorn/prefer-global-this" = "error" # or "warn"Examples#
example.js3 problems
globalPrefer globalThis over environment-specific global aliases like window, self, and global..cache = new Map();
windowPrefer globalThis over environment-specific global aliases like window, self, and global..setTimeout(refresh, 1000);
if (typeof windowPrefer globalThis over environment-specific global aliases like window, self, and global. !== "undefined") {
start();
}example.jsNo problems
globalThis.cache = new Map();
globalThis.setTimeout(refresh, 1000);
if (typeof globalThis.window !== "undefined") {
start();
}example.jsNo problems
const width = window.innerWidth;
window.addEventListener("resize", layout);
self.postMessage({ done: true });
const handler = window[name];An event that isn't specific to the window is reported:
example.js1 problem
windowPrefer globalThis over environment-specific global aliases like window, self, and global..addEventListener("click", close);