基本的な
JS関数が実行され、システムが暗黙属性スコープが作成され、スコープのスコープチェーンは、機能に記憶されています。
このスコープの分析を通じ、およびJavaScriptを理解することは困難な多くの問題を説明することができるようになります:
例1:
function demo(){}
demo();
関数が実行されたときに、この関数はグローバル関数の場合はscope属性は、作成され、彼のスコープはグローバルオブジェクトとアクティベーションオブジェクトに保存されます。
グローバルオブジェクトは、等、可変機能を有するそのようなどのような情報は、関数内に格納されているグローバル情報とactivitionオブジェクトに格納されています
例2:
機能デモ(){ 関数内(){} } デモ()。
この関数は内部関数であるならば、彼は親の手紙のプロトタイプチェーンを継承し、その先端に、独自のアクティベーションを作成します。
関数が終了すると、関数のプロトタイプチェーンが破壊されます。
なぜ関数の外部サブルーチン関数を呼び出しません
実施例2に示すように:
デモ機能が終了すると、関数のプロトタイプチェーンが破壊され、外部に関数の内部情報を知る方法はありません。あなたは、内側の関数を呼び出すことはできません
なぜサブルーチンは、親の変数機能を使用することができます
親関数は、彼が親関数定義された変数で見つかったプロトタイプチェーンのアクティベーションオブジェクトに親関数を渡すことができるので、関数はプロトタイプチェーンを継承します