1. 変数のスコープ: [P71]
この文は非常に洞察に富んでいます: 「ECMAScript には、グローバル環境と関数環境の 2 つの実行環境しかありません。それぞれの関数は実行です」つまり、変数が中括弧のペア内で宣言されている場合でも、中括弧の外側でもアクセスできます。」以下に例を示します。
for(var i=0; ivar num = 20; // for ステートメント内で宣言された変数
}
alert(num); num 値
は、例外ステートメントでも機能します。
try {
var num = 20; // try ステートメントで宣言された変数
a = b; // 例外を発生させます
} catch(e) {
alert(num); // catch ステートメントで変数を呼び出すと 20
}finally {
alert(num); //finally ステートメントで変数を呼び出すと 20
}
alert( num); // try ステートメントの外で変数を呼び出すと、20 が返されます。
上記の 2 つのステートメントに加えて、次のように中括弧のペアは実行環境を形成できません。 🎜 >
{ var num = 1;3 }
2. このポインタ: [P83]
ECMAScript でのこのポインタのさまざまな意味をここにリストします: (1) グローバルで使用されます実行環境では、これはブラウザのウィンドウ オブジェクトであるグローバル オブジェクトを表します。
(2) これを関数実行環境で使用する場合、状況は少し複雑になります。関数が非ウィンドウ オブジェクトとしての明らかな属性を持たず、関数を定義するだけの場合、その関数が別の関数で定義されているかどうかに関係なく、この関数の this は引き続きウィンドウ オブジェクトを表します。関数が非ウィンドウ オブジェクトのプロパティとして明示的に使用されている場合、関数内の this はこのオブジェクトを表します。 (もちろん、apply または call 関数を使用してデフォルトの this 参照を置き換えることもできます。詳細については [P88] を参照してください)
(3) new 演算子を介して関数を呼び出す場合、関数はコンストラクター。これは関数によって作成されたオブジェクトのコンストラクターを指します。
参考:
『JavaScriptの基礎と事例開発の詳細解説』清華大学出版局