ホームページ >ウェブフロントエンド >jsチュートリアル >js 変数のスコープとこの pointer_javascript スキルについてのディスカッション

js 変数のスコープとこの pointer_javascript スキルについてのディスカッション

WBOY
WBOYオリジナル
2016-05-16 18:13:52854ブラウズ
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の基礎と事例開発の詳細解説』清華大学出版局
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。