javascript閉鎖及びスコープ
2033 ワード
1.クローズド
「クローズド」とは、多くの変数とこれらの変数が結合された環境を持つ表現(通常は関数)を意味し、これらの変数もこの式の一部である.
クローズドの意味:クローズドパックは関数の入れ子であり、内部の関数は外層関数のすべての変数を使用しても、外層関数はすでに実行済みである(これはJavaScript作用領域チェーンに関連する).
例1:
機能 checkClose(){ var str = 'ライン・マン set Timeout( function(){ alert( str ); } //これは匿名関数です. , 2000);checkCloure();
関数内部の変数が関数の外で参照されることができるとき、私たちは閉じたパケットを作成しました.
function inc(a){
var i=0
return function(){
return i;
};
)
var num=inc()
alert(num)
2.Javascriptのスコープ
2.jsの運転手順
文書ストリームに複数のスクリプトコードセグメント(scriptタグで区切られたjsコードまたは導入されたjsファイル)が含まれている場合、それらの動作順序は、ステップ1.最初のコードセグメントを読み込む(js実行エンジンは一行ではなく、一部で実行される)ステップ2.構文解析を行い、間違った場合は構文エラー(かっこ不一致など)を報告する.ステップ5のステップ3に移行します.var変数とfunction定義を「事前解析」します.ステップ4.コードセグメントを実行します.エラーがあればエラーを報告します.ステップ5.次のコードセグメントがあれば、次のコードセグメントを読み込み、ステップ2を繰り返します.
3.文法分析と「前解析」(1)、解釈型言語のコンパイルプロセスから周知のように、javascriptは解釈型言語であり、ccaやjavaなどのコンパイル型言語とは違っています.
従来のコンパイル型言語にとって、コンパイルのステップは、語法分析、文法分析、語義検査、コード最適化、バイト生成に分けられます.
しかし、解釈型言語にとっては、語法分析と文法分析によって文法ツリーを得ると、解釈実行が開始されます.
「クローズド」とは、多くの変数とこれらの変数が結合された環境を持つ表現(通常は関数)を意味し、これらの変数もこの式の一部である.
クローズドの意味:クローズドパックは関数の入れ子であり、内部の関数は外層関数のすべての変数を使用しても、外層関数はすでに実行済みである(これはJavaScript作用領域チェーンに関連する).
例1:
機能 checkClose(){ var str = 'ライン・マン set Timeout( function(){ alert( str ); } //これは匿名関数です. , 2000);checkCloure();
関数内部の変数が関数の外で参照されることができるとき、私たちは閉じたパケットを作成しました.
function inc(a){
var i=0
return function(){
return i;
};
)
var num=inc()
alert(num)
2.Javascriptのスコープ
1. Javascript , var , undefined
:
<script type="text/javascript">
var a = "hello";
b = "world";
Test();
function Test() {
alert(a + " " + b); // undefined world
var a = "welcome";
b = "china";
alert(a + " " + b); // welcome china
}
alert(a + " " + b); // hello china.
</script>
aはプリコンパイルの過程ですでに作成され、undefinedに初期化されていますが、bは実際に実行する時に順番に説明するしかありません.2.jsの運転手順
文書ストリームに複数のスクリプトコードセグメント(scriptタグで区切られたjsコードまたは導入されたjsファイル)が含まれている場合、それらの動作順序は、ステップ1.最初のコードセグメントを読み込む(js実行エンジンは一行ではなく、一部で実行される)ステップ2.構文解析を行い、間違った場合は構文エラー(かっこ不一致など)を報告する.ステップ5のステップ3に移行します.var変数とfunction定義を「事前解析」します.ステップ4.コードセグメントを実行します.エラーがあればエラーを報告します.ステップ5.次のコードセグメントがあれば、次のコードセグメントを読み込み、ステップ2を繰り返します.
3.文法分析と「前解析」(1)、解釈型言語のコンパイルプロセスから周知のように、javascriptは解釈型言語であり、ccaやjavaなどのコンパイル型言語とは違っています.
従来のコンパイル型言語にとって、コンパイルのステップは、語法分析、文法分析、語義検査、コード最適化、バイト生成に分けられます.
しかし、解釈型言語にとっては、語法分析と文法分析によって文法ツリーを得ると、解釈実行が開始されます.