JavaScript の globalThis の役割として、正しいものはどれですか?
1〜4キーで選択、Enterで回答できます
解説
正解は「ブラウザや Node.js などの実行環境に関係なく」です。globalThis は、どの環境でもグローバルオブジェクト(setTimeout や console などの組み込み機能をまとめて持つ、最上位のオブジェクト)を指す共通の名前です。環境ごとに名前が違った問題を解決する以前は、グローバルオブジェクトを指す名前が環境ごとに異なっていました。ブラウザ: windowNode.js: globalWeb Worker(画面とは別スレッドで動くスクリプト): selfそのため、複数の環境で動くコードでは条件分岐が必要でした。globalThis を使えば、どの環境でも同じ書き方で済みます。// ブラウザでも Node.js でも同じ結果になる console.log(typeof globalThis.setTimeout); // 'function'その他の選択肢について「ブラウザ専用の機能で」: ブラウザでは window と同じものを指しますが、Node.js などでも使えます。「関数の中で使うと」: 呼び出し元によって変わるのは this です。globalThis はどこで使っても同じグローバルオブジェクトを指します。let や const で宣言した変数は globalThis から参照できないトップレベルで宣言した変数はすべてグローバルオブジェクトのプロパティになる、と思われがちですが、そうなるのは通常のスクリプトで var を使った場合だけです。var a = 1; let b = 2; console.log(globalThis.a); // 1 → var はプロパティになる console.log(globalThis.b); // undefined → let/const はならないなお、ES モジュール(import/export を使うファイル)では、var で宣言してもグローバルオブジェクトのプロパティにはなりません。参考globalThis - JavaScript | MDN