ホームページ >ウェブフロントエンド >jsチュートリアル >js変数とそのscope_javascriptスキルの詳細な説明

js変数とそのscope_javascriptスキルの詳細な説明

WBOY
WBOYオリジナル
2016-05-16 17:57:341040ブラウズ
1. 変数の型
Javascript は Java や C などの言語とは異なり、型付けがなく検出が弱い言語です。変数の定義には変数の型を宣言する必要はありません。代入を通じてさまざまな型のデータを同じ変数に割り当てることができます。例:
コードをコピー コードは次のとおりです:

i=100;//数値型
i="variable";//文字列型
i={x:4};//オブジェクト型
i=[1,2,3];//配列型

JS のこの機能によりコーディングがより柔軟になりますが、コンパイラーの検出が弱いため、長いコードを維持するのが非常に困難になるという欠点もあります。
2. 変数宣言
JS における変数宣言は、明示的宣言と暗黙的宣言に分かれます。
var i=100;//明示的な宣言
i=100;//暗黙的な宣言
関数内で var キーワードを使用して明示的に宣言された変数はローカル変数として使用され、役に立ちません var キーワードはグローバル変数を宣言します直接割り当てを使用します。
宣言されていない変数にアクセスすると、JS はエラーを報告します。宣言されていない変数に値を代入すると、JS はエラーを報告しません。逆に、暗黙的にグローバル変数を宣言したいと考えるため、注意が必要です。
3. グローバル変数とローカル変数
JS パーサーが実行されると、まず実行環境でグローバル オブジェクトが構築されます。これは、オブジェクトのプロパティです。 、トップレベルのコードでは、 this キーワードと window オブジェクトを使用してアクセスできます。関数本体内のローカル変数は、関数の実行時に生成される呼び出しオブジェクト内にのみ存在します。ローカル変数は、関数が実行されるとすぐに破棄されます。したがって、プログラミングでは、変数を合理的に宣言する方法を考慮する必要があります。これにより、不要なメモリのオーバーヘッドが削減されるだけでなく、変数の繰り返し定義や以前に定義された変数の上書きによって引き起こされるデバッグの問題が大幅に回避されます。
4. 変数のスコープ
変数のスコープは、どのプログラミング言語においても重要な詳細です。 JS の変数のスコープは JAVA や C などの言語に比べて比較的自由です。大きな特徴は、JS 変数にはブロックレベルのスコープが存在しないことです。関数内の変数は Run 関数全体で有効です。次のコード:
コードをコピー コードは次のとおりです:




上記は参照型の変数割り当てですが、実際に渡されるのはメモリ アドレスへの参照なので、a_array と b_array へのアクセスになります。実際には両方とも、操作されるのは同じメモリ領域です。参照変数を保存するためにメモリ領域を再割り当てする場合は、クローン作成メソッドまたはカスタム メソッドを使用して参照変数のデータをコピーする必要があります。


JS 変数スコープ




コードをコピー


コードは次のとおりです。


var は、初めて a が出力される前に、JS がコンパイル前分析で を変更に割り当てているため、最初の Change は次のようになります。 fun() 関数が初めて呼び出されるとき、JS は新しいスコープを作成して出力します。そのため、fun() の最初の出力は未定義になります。 2 番目の出力には値が割り当てられているため、次のような新しい値が出力されます。







コードは次のとおりです。