1。変数
ECMAScript変数は緩い変数です。いわゆるルーズ変数は、変数名があらゆるタイプのデータを保持できることを意味します。各変数は、値を保存するための単なるプレースホルダーです。
定義:Var FirstDemo;
2。変数の範囲
2.1基本概念
VARを使用して変数を定義します。変数の範囲を定義するローカル変数を定義します。変数を定義するこの方法は、明示的な宣言でもあります。
これを理解していない場合は、次のシンプルで粗雑な例を見ることができます。
コードコピーは次のとおりです。
テスト();
function test(){
var firstdemo = "hello"; //ローカル変数を定義します
アラート(FirstDemo); //こんにちは
}
テスト();
function test(){
var firstdemo = "hello"; //ローカル変数firstdemoを定義します
}
Alert(FirstDemo); //エラーを報告してください、FirstDemoは定義されていません
上記の2つの例から、関数内のVARを使用して変数が定義されている場合、関数が終了すると変数が破壊されます。
変数を定義するためにvarを省略します:変数を定義する関数が1回呼び出される限り、変数にグローバルにアクセスできます。変数を定義するこの方法は、暗黙の宣言でもあります
コードコピーは次のとおりです。
<script type = "text/javascript">
テスト();
アラート(FirstDemo); //こんにちは
function test(){
firstdemo = "hello";
}
</script>
ヒント:明示的に宣言された変数は、事前コンパイル時に呼び出しオブジェクトに既にコンパイルされています(たとえば、var t = 1; var t = 1は、precompilpiledの場合、解釈するとt = 1)とは異なります。
変数の範囲を把握することは、変数を合理的に宣言する方法を考えるのに役立ちます。これは、不必要なメモリオーバーヘッドを減らすだけでなく、変数の繰り返しの定義と以前に定義された変数を上書きすることによって引き起こされる問題を大幅に回避します。
2.2スコープ分析
コードコピーは次のとおりです。
<script type = "text/javascript">
関数demofunction(s){
document.writeln(s)
}
var i = 0; //グローバル変数を定義します
function test(){
デモ機能(i);
関数innerfunction(){
var i = 1; //ローカル変数を定義します
デモ機能(i);
}
innerfunction();
デモ機能(i);
}
テスト();
</script>
出力結果:0 1 0
コードコピーは次のとおりです。
<script type = "text/javascript">
関数demofunction(s){
document.writeln(s)
}
var i = 0;
function test(){
デモ機能(i);
関数innerfunction(){
デモ機能(i);
var i = 1;
デモ機能(i);
}
innerfunction();
デモ機能(i);
}
テスト();
</script>
出力結果:
A、0 0 1 0
B、0未定義1 0
C、0エラーIは定義されていません
どちらが結果であるかを推測でき、その理由はメッセージで詳細に説明されます。
上記はこの記事に関するすべてです。簡単に言えば、プログラミング言語の変数の範囲は非常に重要な詳細です。 JSの変数の範囲は、JavaやCなどの言語の変数よりも比較的自由です。大きな特徴は、JS変数にブロックレベルの範囲がなく、関数の変数が関数全体で有効であることです。