ホームページ > ウェブフロントエンド > jsチュートリアル > JavaScript変数宣言の詳しい解説_javascriptスキル

JavaScript変数宣言の詳しい解説_javascriptスキル

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

関数本体の外側で定義されたものはグローバル変数、関数本体の内側で定義されたものはローカル変数です。ここでの定義は、var による宣言を指します。

JavaScript には暗黙的なグローバルの概念があり、宣言されていない変数はグローバル オブジェクト プロパティになることを意味します。例:

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

関数テスト(){
私の名前 = "ハミング";
アラート(私の名前);
}
test(); // 「ハミング」
アラート(私の名前) //「ハミング」

2 つの結果は同じであり、myname がグローバル変数であることを示しています。

では、暗黙的なグローバル変数と明示的に定義されたグローバル変数の間に違いはあるのでしょうか? 。答えは間違いなく「はい」です。以下の例を見てください:

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

// 3 つのグローバル変数を定義します
var global_test1 = 1;
global_test2 = 2 // ネガティブ教材
(関数() {
Global_test3 = 3 // ネガティブな教材
}());
//
を削除しようとします global_test1 を削除します。 // false
global_test2 を削除します。 // true
global_test3 を削除します。 // true
// 削除をテストします
alert(typeof global_test1); // "番号"
alert(typeof global_test2); // "未定義"
alert(typeof global_test3); // "未定義"

上記の例からわかるように、関数外で var で定義された global_test1 は削除できません。また、var で定義されていない global_test2 と global_test3 は (関数本体内で作成されたかどうかに関係なく) 削除されます。

要約すると、関数の外で var を介して宣言されたグローバル変数は削除できませんが、暗黙的なグローバル変数は削除できます。

ここで注意すべき点: JavaScript には「ホイスティング」(一時停止/上位解析/事前解析) と呼ばれる動作があります。

例で説明してみましょう:

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

var myname = "huming" //グローバル変数を宣言します
; 関数 test() {
アラート(私の名前);
var myname = "local_huming";
アラート(私の名前);
}
テスト();

2 つのアラートの内容は同じだと思いますか? ?明らかに一貫性がありませんが、一貫していることは言うまでもありません。 。実際の出力は、「unknown」、「local_huming」です。

上記の例は

と同等です

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

var myname = "huming" //グローバル変数を宣言します
; 関数 test() {
var myname;
アラート(manname);
myname = "local_huming";
アラート(私の名前); // "ローカル"
}
テスト();

最初のアラートによって出力される myname は、あなたが考えているグローバル変数ではなく、それと同じスコープ (関数本体) 内のローカル変数です。宣言はされていないものの、そのように扱われます。これを「吊り上げ」といいます。

これで明らかになるはずです。関数本体で変数を使用し、後で再宣言すると、エラーが発生する場合があります。

書き込み仕様:

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

関数 test() {
var a = 1,
b = 2、
c = a b,
d = {},
e、
f;
// 関数本体...
}

利点は次のとおりです:

1. 検索を容易にするために、すべてのローカル変数が関数の先頭で定義されます。

2. 変数が定義される前に使用された場合の論理エラーを防止します。

JavaScript の変数宣言は理解できましたか? 最後のまとめも非常にわかりやすく書かれていますので、お見逃しなく。

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