JavaScript学習メモ:変数とそのスコープ_基礎知識

WBOY
リリース: 2016-05-16 16:20:09
オリジナル
1146 人が閲覧しました

1. 変数

ECMAscript 変数はルーズ変数です。いわゆるルーズ変数とは、変数名が値を保存するための単なるプレースホルダーであることを意味します。

定義: var firstDemo;

2. 変数のスコープ

2.1 基本概念

var を使用して変数を定義する: 変数のスコープ内でローカル変数を定義するこの変数を定義する方法は、明示的宣言とも呼ばれます。

これが理解できない場合は、以下の単純かつ大雑把な例を見てください:

コードをコピーします コードは次のとおりです:

テスト();
関数テスト(){
var firstDemo="hello";//ローカル変数を定義します
alert(firstDemo);//こんにちは
}
テスト();
関数テスト(){
var firstDemo="hello" //ローカル変数 firstDemo を定義します
}
alert(firstDemo);//エラーレポート、firstDemo が定義されていません

上記の 2 つの例からわかるように、var を使用して関数内で変数を定義すると、その変数は関数の終了後に破棄されます。

変数を定義するには var を省略します。変数を定義する関数が 1 回呼び出されるだけで、変数はグローバル スコープでアクセスできます。変数を定義するこの方法は、暗黙的宣言

とも呼ばれます。

コードをコピーします コードは次のとおりです:

<スクリプトタイプ="text/javascript">
test();
alert(firstDemo); //こんにちは
関数 test(){
firstDemo="hello";                                                                      


ヒント: 明示的に宣言された変数は、プリコンパイル中に呼び出し元オブジェクトにすでにコンパイルされています (たとえば、var t=1; プリコンパイル中に var t を実行; 解釈中に t=1 を実行)。これは、暗黙的に宣言された変数が定義されていないこととは異なります。解釈されるまではグローバル変数として扱われます。

変数のスコープをクリアすると、変数を合理的に宣言する方法を考えるのに役立ちます。これにより、不必要なメモリ オーバーヘッドが削減されるだけでなく、以前に定義された変数を上書きする変数の繰り返し定義によって引き起こされる問題も大幅に回避できます。

2.2 スコープ分析

コードをコピーします コードは次のとおりです:
<スクリプトタイプ="text/javascript">
関数デモ関数{
document.writeln(s)
}
var i=0; // グローバル変数を定義します
関数 test(){
デモ関数(i)
function innerFunction(){
var i = 1 //ローカル変数を定義します
デモ関数(i); }
innerFunction(); デモ関数(i)
}
テスト();




出力結果: 0 1 0

コードをコピーします

コードは次のとおりです: <スクリプトタイプ="text/javascript"> 関数デモ関数{
document.writeln(s)
}
変数 i=0; 関数 test(){
demoFunction(i);
function innerFunction(){
demoFunction(i);
var i=1;
demoFunction(i);
}
innerFunction(); demoFunction(i);
}
テスト();


出力結果:

あ、0 0 1 0

B、0 未定義 1 0

C、0 エラー i が定義されていません

どの結果になるかは推測できます。理由はメッセージで詳しく説明されます。

上記はこの記事の全内容です。簡単に言えば、プログラミング言語における変数のスコープは非常に重要です。 JSの変数のスコープはJAVAやCなどの言語に比べて自由です。JSの変数にはブロックレベルのスコープがなく、関数内の変数は関数全体で有効であることが大きな特徴です。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート