JavaScriptにおけるスコープの理解
1645 ワード
先にむだ話を言って、私はいくつか前の知識が忘れ始めると感じて、そこで再びJavaScript高級なプログラムを回想してこのしっかりとした基礎の神の本を設計して、思い出しても1本の辛酸の涙です.結局、トレーナーを探していませんでしたが、一週間で七八八八分を忘れてしまいました.その後、一週間をかけてもう一度見ました.今まで3回目の時間をかけてこの本を読みました.よく反省してみると、自分で勉強する上で専門理論を重視しないという大きな問題以外にも、この本の内容が非常に豊富で短時間では把握できないという原因があります.プロトタイプ、プロトタイプチェーン、継承などのjsの核心知識点が述べられています.一字一句順を追って漸進し,油で飽きることはない.(しかし、本にもあまり詳しくて、ポイントが分かりません.無駄話が多いという欠点があります.)もう一度重要な知識点を読んでから、理解は全部分かりましたが、自分の話でもう一度言ったら本当の理解になると思います.
1、何が実行環境ですか?
実行環境とは、jsのコードの実行環境であり、常に言っているコンテキストでもあります.ブラウザのwindowは実行環境です.しかも、一番外側のグローバル実行環境です.各実行環境には変数オブジェクトがあります.この環境下に保存されている変数と手紙の数は、実行環境中のコードが全部実行された後、この環境が破壊されます.グローバル実行環境のwindowはブラウザが閉じている時だけ破壊されます.各関数には自己の実行環境(局所実行環境)があり、実行フローが関数に入ると、関数の環境は環境スタックに押し込まれ、関数が実行された後、スタックはその環境をイジェクトし、制御権を関数の外部環境に戻す.
2、作用ドメインチェーン
コードが環境で実行されると、変数オブジェクトの作用ドメインチェーンが作成されます.作用ドメインチェーンの用途:現在実行されている環境にアクセスできる変数と方法の規則的なアクセスを保証します.この作用するドメインチェーンの先頭は常に現在実行されているコードのある環境の変数オブジェクトです.次の変数オブジェクトは含まれる環境から外挿されます.つまり、ロールフィールドチェーンは環境を実行する変数オブジェクトからなり、順番は内側から外側になります.識別子解析:スコープのレベル1に沿って識別子を検索するプロセス.くりを一つあげる:
他の種類のc言語では、かっこの閉じたコードブロックは自分の役割領域がありますが、jsにはありません.直接コードを貼ります.
1、何が実行環境ですか?
実行環境とは、jsのコードの実行環境であり、常に言っているコンテキストでもあります.ブラウザのwindowは実行環境です.しかも、一番外側のグローバル実行環境です.各実行環境には変数オブジェクトがあります.この環境下に保存されている変数と手紙の数は、実行環境中のコードが全部実行された後、この環境が破壊されます.グローバル実行環境のwindowはブラウザが閉じている時だけ破壊されます.各関数には自己の実行環境(局所実行環境)があり、実行フローが関数に入ると、関数の環境は環境スタックに押し込まれ、関数が実行された後、スタックはその環境をイジェクトし、制御権を関数の外部環境に戻す.
2、作用ドメインチェーン
コードが環境で実行されると、変数オブジェクトの作用ドメインチェーンが作成されます.作用ドメインチェーンの用途:現在実行されている環境にアクセスできる変数と方法の規則的なアクセスを保証します.この作用するドメインチェーンの先頭は常に現在実行されているコードのある環境の変数オブジェクトです.次の変数オブジェクトは含まれる環境から外挿されます.つまり、ロールフィールドチェーンは環境を実行する変数オブジェクトからなり、順番は内側から外側になります.識別子解析:スコープのレベル1に沿って識別子を検索するプロセス.くりを一つあげる:
window.onload=function(){
var a = 1;
var b = 2;
function func1(){
var a = 2; //
console.log(a); // a, , - a, 2
console.log(b); // b, , - b, 2
console.log(c); // c, , c, c is not defined
function func2(){
var c = 3;
}
}
func1();
}
拡張:JSはブロックレベルの作用領域がありません.他の種類のc言語では、かっこの閉じたコードブロックは自分の役割領域がありますが、jsにはありません.直接コードを貼ります.
if(true){
var a = 1;
}
console.log(a); // 1