JavaScript では、グローバル オブジェクトはすべての開発者にとって重要な概念です。これには、プログラム内でグローバルにアクセス可能なすべての変数、関数、オブジェクトが含まれます。この投稿では、グローバル オブジェクトとは正確には何なのか、さまざまな環境でグローバル オブジェクトがどのように動作するのか、また、効果的でクリーンで保守しやすいコードにはグローバル オブジェクトを正しく管理することがなぜ重要なのかを説明することを目的としています。
グローバル オブジェクトとは何ですか?
グローバル オブジェクトは、JavaScript が実行される環境として理解できます。これは、すべてのグローバル変数と関数のコンテナーです。ブラウザでは、グローバル オブジェクトは window _ですが、Node.js では _global です。関数の外で宣言されたグローバル変数または関数は、グローバル オブジェクトを通じてアクセスできます。
ブラウザ
var a = 1; console.log(window.a); // 1
Node.js
var a = 1; console.log(global.a); // 1
グローバル スコープと変数
グローバルに宣言された変数は、グローバル オブジェクトにアタッチされます。複数のスクリプトが同じグローバル空間を共有している場合、ここで競合が発生する可能性があります。
var を使用してグローバル スコープ内で同じ名前の変数を宣言する 2 つの異なるスクリプトがあると想像してください。
スクリプト 1
var message = "Hello!"; console.log(message) // Hello!
スクリプト 2
var message = "Goodbye!"; console.log(message); // Goodbye!
両方のスクリプトを実行すると、var を使用してグローバル スコープでメッセージ変数を宣言します。 2 番目のスクリプトは、スクリプト 1 で設定されたメッセージの値を上書きします。これは、両方の変数が同じグローバル空間 (ブラウザーでは window) に保存されているためです。 これにより出力に違いが生じます。
これを回避するには、グローバル変数の使用を制限することが最善です。スコープをできるだけローカルに保ちます。
globalThis および ウィンドウ
最近まで、開発者はグローバル オブジェクトにアクセスするには、ブラウザーのウィンドウと Node.js のグローバルを使用する必要がありました。ただし、ES2020 では、複数の環境にわたってグローバル オブジェクトにアクセスするための統一された方法である globalThis が導入されました。 globalThis は、グローバル オブジェクトへのアクセスを標準化します。
グローバル関数とオブジェクト
グローバル オブジェクトには、console、setTimeout _and _setInterval、JSON、Math。グローバル オブジェクトを直接参照しなくても、これらにグローバルにアクセスできます。
では、クリーンで効果的なコードを維持しながら、ベスト プラクティスを維持するにはどうすればよいでしょうか?グローバル オブジェクトは便利ですが、これに依存しすぎると問題が発生する可能性があります。いくつかのアドバイスがあります: 名前の競合や意図しない副作用のリスクを軽減するためにグローバル変数 (var) の使用を避け、代わりに関数内でローカル変数を使用してください。 let と const を使用します。ブラウザ内のグローバル オブジェクト
ブラウザでは、ウィンドウ オブジェクトは単なるグローバル コンテナではありません。また、DOM (
document)、ブラウザー API (fetch)、その他の Web 固有のオブジェクトも保持します。これにより、ウィンドウがブラウザベースの JavaScript 実行の中心となります。
Node.js 中的全域物件
在 Node.js 中,全域物件是 global,但它不會像瀏覽器中的 window 那樣自動向其新增變數。 Node.js 鼓勵使用模組來保持全域命名空間的乾淨和結構化。
結論
全域物件是 JavaScript 處理全域變數、函數和物件的核心。了解它在不同環境中的工作原理、謹慎使用它並遵循最佳實踐將幫助您編寫乾淨、可維護的程式碼。透過使用 let 或 const 最小化全域變量,您可以避免問題並提高您的 JavaScript 技能。
來源:
全域物件
全域物件
以上是JavaScript 中的全域對象的詳細內容。更多資訊請關注PHP中文網其他相關文章!