ホームページ >ウェブフロントエンド >jsチュートリアル >js -- 変数のスコープ
初心者として、毎日何かを学ぶのは良いことです。今日、クロージャについて学んでいたときに、スコープとスコープチェーンという 2 つの概念を見ましたが、野心を持った初心者として、これらを詳しく理解する必要があると感じました。
変数のスコープ
jsの変数には、グローバル変数とローカル変数があります。これは文字通り理解できると思います...例を示します
var message = "今天我做的糯米蒸排骨"; //定义一个全局变量function doL(){ var ss = "侠客行很好看"; //定义一个局部变量 alert(message); //输出"今天我做的糯米蒸排骨",在函数中可以引用到全局变量 function alertDo(){ alert(ss); } alertDo(); //输出"侠客行很好看",这就涉及变量的作用域了 };doL(); alertDo(); //没法输出 alertDo is not definedalert(message); //可以输出"今天我做的糯米蒸排骨"
ここには2つの興味深い点があります
1. 変数がvarで宣言されていない場合、実際にはグローバル変数を宣言します。は間違っています。以下を見てください。num はグローバル変数、
および mum = 1;
は実際には属性の割り当て操作です。まず、現在のスコープ チェーンで mum を解決しようとします (メソッドで宣言されている場合、現在のスコープ チェーンはグローバル スコープとメソッドのローカル スコープなどを表します)。見つかった場合は mum 属性の割り当てが実行され、mum が見つからなかった場合は、グローバル オブジェクト (つまり、ウィンドウなどの現在のスコープ チェーンの最上位オブジェクト) に mum 属性が作成されます。オブジェクト)と割り当て。 注意!グローバル変数は宣言しませんが、グローバル オブジェクトのプロパティを作成します。変数宣言には独自の削除不可能な属性があるため、var num = 1 と num = 1 を比較します。前者は削除不可能な属性を持つ変数宣言であるため、後者はグローバル変数の属性です。ので、グローバル変数から削除できます。
var num =1; mum = 1;
var scope="global"; function t(){ console.log(scope); var scope="local" console.log(scope); } t();
最初に未定義を出力し、次にスコープを宣言します。事前にローカル変数を上書きします。これは次の状況と同等です
var scope="global"; function t(){ var scope; console.log(scope); scope="local" console.log(scope); } t();
以上がjs -- 変数のスコープの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。