1. Javascript の変数宣言について
JavaScript では、変数
var a=1; を宣言するか、次の 2 つの式を直接宣言できます。 > 違いがあります。
1 つは現在のスコープのローカル変数であり、もう 1 つは現在のスコープのグローバル変数です。
JavaScript 言語の特別な点は、グローバル変数を内部で直接読み取ることができることです。機能。
alert(n);
}
f1() // 999
一方、関数内のローカル変数を自然に読み取ることはできません。機能の外。
コードをコピー
}
alert(n); // エラー
2.
JavaScript 変数スコープ チェーン
コードをコピーします
a();
function a(){
var x='aaa ';
document.writeln(x);
var x='bbb ';
document.writeln(x); //bbb
}
b(); //aaa
}
//結果は次のとおりです: 000 unknown bbb aaa
原則:
変数が使用されるときは、まず関数ブロックから変数を検索します (権限のある関数の呼び出しオブジェクトによって説明されます)。
見つかった場合は、上位の関数ブロックから見つかるまで検索します。
最上位のコードまで定義が見つからなかった場合 (var x=' の位置を参照) 000 ';)、コードは未定義のエラーを報告します。
1. 実行順に、x '000 ' を出力します (これは問題ありません)。
2. 次に、a() で b() を実行します。 .b() は x を出力する必要があります。関数本体 (スコープ) に x の定義がありますが、値が割り当てられていないため、出力は未定義です (重要な点!)
5. x, x には値が割り当てられているので、bbb が出力されます。
6. 最後に、aaa を出力します。
コードをコピー
コードは次のとおりです。
alert( x) //return "f2"
}
f();
alert(x); //return "global" は再割り当てされていません: f2
//結果がポップアップしますそれぞれ: f2 global f2 global
説明:
まず f() で f2() を実行します。
f2() は内部関数のスコープを作成するため、x='f2'グローバル x ではなく、f() の x 値を変更します。
alert(x) は 'f2'、alert(window.x) は 'global' です。
次に、alert(x) を実行します。 of x はグローバル、つまり「グローバル」です
3. 初心者向けの提案
1. グローバル変数を減らす (解決策: 変数をオブジェクトにカプセル化します)
引用:
世界中の散らかった足跡をすべて 1 人に共有することで、他のアプリケーション、ガジェット、または JS ライブラリとの相互運用性のリスクを大幅に減らすことができます。」
– Douglas Crockford
コードをコピーします
コードは次のとおりです:
var name = 'Jeffrey';
var lastName = 'Way'; doSomething() {...}
console.log(name); // Jeffrey -- または window.name
より良い書き方
コードをコピー
コードは次のとおりです:
var DudeNameSpace = {
name : 'Jeffrey',
lastName : 'そうですね、
コードをコピー
コードは次のとおりです:
var someItem = 'ある文字列';
var anotherItem = '別の文字列';
var oneMoreItem = 'もう 1 つの文字列';
Better way of writing
var someItem = 'some string',
anotherItem = 'another string',
oneMoreItem = 'one more string';
Self-explanatory. I don't know if this will speed up your code, but it will make your code a lot cleaner.