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中文网其他相关文章!