globalThisについて調べた
更新日
この記事は、ryokatsu Advent Calendar 2021の5日目の記事です。
あるOSSのソースコードを読んでいたらglobalThisが出てきてそういえばあまり知らないと思ったので何となく調べたことを書きます。
まず以下のコードを実行して見ましょう!
console.log(globalThis === window);
実行するとtrue
が返ってきます。globalThisは、windowとイコールです!つまりglobalThisは、グローバルオブジェクトと同じということが分かりました。
Node.jsで扱えるように
globalThisのプロポーザルを読むと、Node.jsではWindowオブジェクトがないことから(同等のシンタックスでglobal
がある)ECMAScriptの標準としてglobalThisが出来たということです。確かに、Node.jsとブラウザの両方の環境で動かすユースケースはありそうな気がします。
以下のように書くだけで、ブラウザ、Node.jsなど環境関係なくグローバル変数を参照、設定できます。
globalThis.value = value
Uhyoさんの記事がめちゃくちゃわかりやすいです。