JavaScript はグローバル変数と暗黙的グローバル変数の違いを表示します
この記事では主にJavaScriptの表示グローバル変数と暗黙的グローバル変数の違いを紹介します
JavaScriptではグローバル変数を宣言する方法が2つあります
-
宣言されたグローバル変数を表示するにはvarを使用します
var なしで宣言された暗黙的なグローバル変数
2 つの違いは、delete 演算子で削除できるかどうかです
まずコードを見てください
var a = 'a'; // 显式声明的全局变量 b = 'b'; // 隐式声明的全局变量 console.log(a); // a console.log(b); // b console.log(window.a); // a console.log(window.b); // b
js では、グローバル変数は実際にはグローバル オブジェクト (ウィンドウ) 属性なので、両方の方法で宣言されたグローバル変数はウィンドウを通じて取得できます
削除には delete を使用してみてください
// 显式声明的全局变量不能被删除 delete a; // 返回 false // 隐式声明的全局变量可以被删除 delete b; // 返回 true // 删除情况 console.log(typeof a); // string console.log(typeof b); // undefined
delete 演算子はオブジェクトの属性を削除できますが、属性は、削除時に false を返します (厳密モードでは例外がスローされます)
これは、var を使用して宣言された変数は設定できないことを意味します。 getOwnPropertyDescriptor を使用して、検証のために属性の特性を記述するオブジェクトを取得します。この 2 つの違いは、明示的に宣言された変数は構成可能ではなく、削除演算子を使用して削除できないことです。構成可能な値が false になると、属性の特性を記述するオブジェクトは変更できないため、属性記述子を変更することはできません。そのため、明示的に宣言されたグローバル変数は delete によって削除できますが、逆に、暗黙的に宣言されたグローバル変数が delete によって削除されないようにすることもできます
Object.getOwnPropertyDescriptor(window, a); // {value: "a", writable: true, enumerable: true, configurable: false} Object.getOwnPropertyDescriptor(window, b); // {value: "b", writable: true, enumerable: true, configurable: true}
以下は他のネチズンの追加です
グローバル変数と暗黙的JavaScript のグローバル変数
暗黙的なグローバル変数と明示的に定義されたグローバル変数の間には小さな違いがあり、それは、delete 演算子を使用して変数を未定義のままにする機能です。
1. var で作成したグローバル変数(関数以外のプログラムで作成したもの)は削除できません。
2. var を使用せずに作成された暗黙的なグローバル変数は (関数内で作成されたかどうかに関係なく) 削除できます。 これは、技術的には、暗黙的なグローバル変数は実際にはグローバル変数ではなく、グローバル オブジェクトのプロパティであることを示しています。プロパティは delete 演算子を使用して削除できますが、変数は削除できません:b = 'b'; var descriptor = Object.getOwnPropertyDescriptor(window, b); descriptor.configurable = false; Object.defineProperty(window, b, descriptor); delete b; // 返回 false
ブラウザでは、グローバル オブジェクトは window 属性を介してコード内のどこからでもアクセスできます (ローカル オブジェクトを宣言するなど、とんでもないことをしない限り) window という名前の変数)。ただし、他のコンテキストでは、この便利なプロパティは別の名前で呼ばれる場合があります (またはプログラムで使用できない場合もあります)。ハードコーディングされたウィンドウ識別子を使用せずにグローバル オブジェクトにアクセスする必要がある場合は、関数スコープの任意のレベルで次の操作を行うことができます:
// 定义三个全局变量 var global_var = 1; global_novar = 2; // 反面教材 (function () { global_fromfunc = 3; // 反面教材 }()); // 试图删除 delete global_var; // false delete global_novar; // true delete global_fromfunc; // true // 测试该删除 typeof global_var; // "number" typeof global_novar; // "undefined" typeof global_fromfunc; // "undefined"
このメソッドは、グローバル オブジェクトがいつでも取得できます。関数は関数として呼び出されます (new を通じて構築されません)。これは常にグローバル オブジェクトを指します。実際、このバグは ECMAScript 5 の厳密モードには当てはまらないため、厳密モードでは別の形式を取る必要があります。たとえば、JavaScript ライブラリを開発している場合は、コードを即時関数でラップし、グローバル スコープからこれへの参照を即時関数のパラメーターとして渡すことができます。
上記は、JavaScript 表示グローバル変数と暗黙的グローバル変数の違いです。この 2 つの基本的な違いは、明示的に宣言された変数は構成可能ではなく、削除演算子を使用して削除できないことです
その他の JavaScript 表示グローバル変数と暗黙的グローバル変数違いに関する記事については、PHP 中国語 Web サイトに注目してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック

C++ ローカル変数とグローバル変数の違い: 可視性: ローカル変数は定義関数に限定されますが、グローバル変数はプログラム全体で参照できます。メモリ割り当て: ローカル変数はスタックに割り当てられ、グローバル変数はグローバル データ領域に割り当てられます。スコープ: ローカル変数は関数内にあり、グローバル変数はプログラム全体にあります。初期化: ローカル変数は関数の呼び出し時に初期化され、グローバル変数はプログラムの開始時に初期化されます。再作成: ローカル変数は関数呼び出しごとに再作成されますが、グローバル変数はプログラムの開始時にのみ作成されます。

Go 言語には静的グローバル変数がありません。グローバル変数の必要性を処理するために、より柔軟な方法が使用されます。グローバル変数は通常、パッケージ レベルで宣言されます。つまり、関数の外で宣言される変数です。これらのグローバル変数はパッケージ全体に存在します. が表示され、パッケージ内の任意の関数で使用できます。

request の中国語の意味は「要求」で、PHP のグローバル変数であり、「$_POST」、「$_GET」、「$_COOKIE」を含む配列です。 「$_REQUEST」変数は、POSTまたはGETで送信されたデータやCOOKIE情報を取得できます。

JavaScript の人気が高まるにつれて、JavaScript に依存する Web サイトやアプリケーションがますます増えています。ただし、JavaScript でグローバル変数を使用すると、セキュリティ上の問題が発生する可能性があります。この記事では、JavaScriptでグローバル変数の安全性を実装する方法を紹介します。グローバル変数の使用を避ける最善の方法は、グローバル変数の使用を避けることです。 JavaScript では、関数内で宣言されない限り、すべての変数はデフォルトでグローバルです。したがって、可能な限りローカル変数を使用する必要があります。

Golang は、効率性、シンプルさ、同時実行性などの特徴を備えた強力に型指定されたプログラミング言語であるため、徐々に多くの開発者に好まれています。 Golang の開発では、関数のグローバル変数とローカル変数がデータ競合の問題を引き起こすことがよくあります。この記事では、Golang関数におけるグローバル変数とローカル変数のデータ競合問題を実際のコーディングの観点から分析していきます。 1. グローバル変数のデータ競合 Golang のグローバル変数はすべての関数でアクセスできるため、厳密な設計とコーディングを行わないと

初期化なしでグローバル変数を再宣言した場合、初期化を使用してグローバル変数を再宣言した場合、およびグローバル変数を再宣言して 2 回初期化した場合に、C と C++ でどのように動作が異なるかを見ていきます。さらに、ローカル変数を使用して上記の組み合わせを繰り返します。 1.A) C プログラム: 初期化せずにグローバル変数を再宣言 #include<stdio.h>intvar;intvar;intmain(){ printf("Var=%d",var); return0;} Output Var=0B) C++プログラム:

はい、Goroutine の Go 関数はデフォルトでグローバル変数に直接アクセスできます。理由: Goroutine は、グローバル変数へのアクセスを含め、Goroutine を作成した Goroutine のメモリ空間を継承します。

PHP グローバル変数には次のものが含まれます: 1. $_SERVER、サーバーのスーパー グローバル変数、および現在のスクリプトが実行されている実行環境情報; 2. $_GET、GET メソッドを通じて現在のスクリプトに渡される変数の連想配列; 3 . $_POST、POST メソッド経由 現在のスクリプトに渡される変数の連想配列 4. $_SESSION、現在のセッションにユーザー関連情報を保存します 5. $_COOKIE、現在のスクリプトに渡される変数の連想配列HTTP Cookie 経由; 6. $_FILES など
