JS変数宣言の詳しい説明

怪我咯
怪我咯オリジナル
2017-07-06 11:31:481766ブラウズ

JavaScriptの変数宣言文は、どこに出現しても他のコードよりも先に実行されます。この記事では、JavaScriptの変数宣言に関する知識を紹介しますので、興味のある方は一緒に学びましょう

。どこに出現しても、他のコードよりも先に実行されます。 var キーワードを使用して宣言された変数のスコープは、現在の実行コンテキストです。これは周辺関数である可能性があります。変数が関数本体の外側で宣言されている場合、それはグローバル変数です。 関数本体の外で定義されたものはグローバル変数、関数本体の内部で定義されたものはローカル変数です。ここでの定義は、var による宣言を指します。


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

function test(){
myname = "huming";
alert(myname);
}
test();  // "huming"
alert(myname);  //"huming"

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


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

// 定义三个全局变量
var global_test = ;
global_test = ; // 反面教材
(function () {
global_test = ; // 反面教材
}());
// 试图删除
delete global_test; // false
delete global_test; // true
delete global_test; // true
// 测试该删除
alert(typeof global_test); // "number"
alert(typeof global_test); // "undefined"
alert(typeof global_test); // "undefined"

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


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


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


例で説明しましょう:

var myname = "huming"; //声明全局变量
function test() {
alert(myname);
var myname = "local_huming";
alert(myname);
}
test();

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


上記の例は

var myname = "huming"; //声明全局变量
function test() {
  var myname;
  alert(maname);<br>  myname = "local_huming";
  alert(myname); // "local"
}
test();

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


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


仕様の記述:

function test() {
var a = ,
b = ,
c = a + b,
d = {},
e,
f;
// function body...
}

利点は次のとおりです:


1. すべてのローカル変数が関数の先頭で定義されるため、変数を使用する前に論理エラーを防ぐことができます。定義されています。


JavaScriptでは、

変数名

(name)にスコープ(スコープ)を入力する4つの方法があります

言語組み込み、すべてのスコープにはこれと引数のキーワードがあります仮パラメータ、

関数パラメータ

はスコープ全体で有効です

関数宣言
変数宣言

上記の 4 つの順序は、
優先度

の高いものから低いものへの順序でもあります。変数名は一度宣言されると、それを上書きすることはできません。他の優先度の低い変数宣言フォーム。

以上がJS変数宣言の詳しい説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。