ホームページ  >  記事  >  ウェブフロントエンド  >  JavaScriptのスコープの詳しい説明

JavaScriptのスコープの詳しい説明

coldplay.xixi
coldplay.xixi転載
2020-07-15 17:12:132260ブラウズ

JavaScriptのスコープの詳しい説明

#スコープは、アクセス可能な変数のコレクションです。

JavaScript スコープ

JavaScript では、オブジェクトと関数も変数です。

JavaScript では、スコープはアクセス可能な変数、オブジェクト、関数のコレクションです。

JavaScript 関数のスコープ: スコープは関数内で変更されます。

JavaScript ローカル スコープ

変数は関数内で宣言され、変数はローカル スコープです。

ローカル変数: 関数内でのみアクセスできます。

// 此处不能调用 carName 变量
function myFunction() {
  var carName = "Volvo";
  // 函数内可调用 carName 变量
}

ローカル変数は関数内でのみ機能するため、異なる関数で同じ名前の変数を使用できます。

ローカル変数は関数の実行開始時に作成され、関数の実行後に自動的に破棄されます。

JavaScript グローバル変数

関数の外部で定義された変数はグローバル変数です。

グローバル変数にはグローバル スコープがあり、Web ページ内のすべてのスクリプトと関数を使用できます。

var carName = " Volvo";
 
// 此处可调用 carName 变量
function myFunction() {
  // 函数内可调用 carName 变量
}

変数が関数内で (var キーワードを使用せずに) 宣言されていない場合、その変数はグローバル変数です。

次の例では、carName は関数内にありますが、グローバル変数です。

// 此处可调用 carName 变量
 
function myFunction() {
  carName = "Volvo";
  // 此处可调用 carName 变量
}

JavaScript 変数のライフサイクル

JavaScript 変数のライフサイクルは、宣言時に初期化されます。

ローカル変数は関数の実行後に破棄されます。

グローバル変数は、ページを閉じた後に破棄されます。

関数パラメータ

関数パラメータは関数内でのみ機能し、ローカル変数です。

HTML のグローバル変数

HTML では、グローバル変数はウィンドウ オブジェクトです。すべてのデータ変数はウィンドウ オブジェクトに属します。

//此处可使用 window.carName
 
function myFunction() {
  carName = "Volvo";
}

ご存知ですか?

グローバル変数または関数は、ウィンドウ オブジェクトの変数または関数をオーバーライドできます。

ウィンドウ オブジェクトを含むローカル変数は、グローバル変数や関数をオーバーライドできます。

補足

ES6

let の let キーワードを使用すると、スコープが以下に制限されることを宣言できます。ブロックレベルの変数、ステートメント、または式。 var キーワードとは異なり、宣言できる変数はグローバルまたは関数ブロック全体のみです。

let 構文:

let var1 [= value1] [, var2 [= value2]] [, ..., varN [= valueN]];

let で宣言された変数は、それが宣言されているブロックまたはサブブロックでのみ使用できます。これは var と似ています。 2 つの主な違いは、var で宣言された変数のスコープが、それを囲んでいる関数全体であることです。

letvar の違いのコード例:

function varTest() {
 var x = 1;
 if (true) {
  var x = 2; // 同样的变量!
  console.log(x); // 2
 }
 console.log(x); // 2
}

function letTest() {
 let x = 1;
 if (true) {
  let x = 2; // 不同的变量
  console.log(x); // 2
 }
 console.log(x); // 1
}

関連学習の推奨事項:

JavaScript ビデオ チュートリアル

以上がJavaScriptのスコープの詳しい説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はjb51.netで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。