ホームページ  >  記事  >  ウェブフロントエンド  >  JavaScript 変数宣言の簡単な分析_javascript スキル

JavaScript 変数宣言の簡単な分析_javascript スキル

WBOY
WBOYオリジナル
2016-05-16 15:24:131263ブラウズ

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(); 

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

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

書き込み仕様:

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

利点は次のとおりです:

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

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

JavaScript では、変数名をスコープ に入れるには 4 つの方法があります。

言語が組み込まれており、すべてのスコープに this キーワードと argument キーワードがあります


仮パラメータ、関数パラメータはスコープ全体で有効です


関数宣言


変数宣言

上記の 4 つの順序は、高から低の優先順位でもあり、一度変数名が宣言されると、他の優先順位の低い変数宣言形式で上書きすることはできません。

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