JavaScript関数理解(一)--関数ネスティングとクローズド入門
1619 ワード
【入れ子関数】JavaScriptは、関数の内部に定義関数が組み込まれていることを許可し、関数がデータ転位パラメータとして他の関数(JavaScriptの関数はすべて対象として取り扱うことができます)に伝達され、関数語法のスコープの下では、従来のオブジェクト指向言語とは異なる驚くべき場所を生成することができます.まず、JavaScriptの関数は語法によってスコープを区分するもので、動的なスコープではなく、関数はそれらのスコープを定義するものであり、それらのスコープを実行するものではなく、それらのスコープを実行するものであるので、ネスト関数とその周辺関数が同じフレーズスコープのスコープに定義されると分かりやすい.
1:JavaScriptでは関数を他の関数に入れ子して定義することができます.
2:ネスト関数を組み合わせると、JavaScriptのクローズドが分かりやすくなります.内部のネスト関数が外部関数の変数やパラメータを使用すると、内部関数はクローズドになります.クローズドの具体的な理解は他のノートに記録されています.
クローズドの特性:
1):閉じたパケットは、ネストされた外部関数を実行した後、外部関数の変数とパラメータに引き続きアクセスすることができます.
--これはJSの関数実行環境と変数作用分域鎖と密接な関係がある.ここで復習して覚えてください.
2):クローズドには、外部関数への参照が含まれます.
--Chromeブラウザでデバッグすると直感的に検証できます.
3):クローズド中に外部関数のthisオブジェクトにアクセスしたい場合は、クローズドに入る前に指定する必要があります.通常の方法は、クローズドに入る前に声明することです.var self=this.クローズドには外部関数のthisオブジェクトをselfで参照します.ここで突然にJSの中のthisの指向について考えてきました.自分のノートをアップロードするのを忘れました.ここではまず一つの文章を引用して、「JavaScriptの中のthisに深く入る」と書いてから、自分の学習ノートを追加します.
4):クローズドは2つの比較的によく使われている用途があり、一つはそれを利用して局部変数にアクセスすることができ、もう一つはその周辺作用領域の変数値を関数呼び出しが完了した後ではなくメモリに保存することができます.(他にも擬似プライベート変数や関数など)があります.
――JavaScript関数はすべてクローズドと言ってもいいですが、一つのネスト関数が定義されているスコープの外に導き出された時だけ、このようなクローズドが面白いです.
1:JavaScriptでは関数を他の関数に入れ子して定義することができます.
function distance(x1, y1, x2, y2) {
function square (x) {
return x * x;
}
return Math.sqrt(square(x1 - x2) + square(y1 - y2));
}
var result = distance(0, 0, 3, 4);
console.log(result); // 5
は、上記のコードセグメントにおいて、関数distanceにネストされた関数squareを定義している.この場合、関数スクウェアはdistanceでしか呼び出されません.もし私たちがdistanceの外注にsquare関数を使いたいなら、JavaScriptの関数が環境と変数の作用領域の制限を実行するため、私たちは非常に友好的ではないエラーのヒントを得ることになります.2:ネスト関数を組み合わせると、JavaScriptのクローズドが分かりやすくなります.内部のネスト関数が外部関数の変数やパラメータを使用すると、内部関数はクローズドになります.クローズドの具体的な理解は他のノートに記録されています.
クローズドの特性:
1):閉じたパケットは、ネストされた外部関数を実行した後、外部関数の変数とパラメータに引き続きアクセスすることができます.
--これはJSの関数実行環境と変数作用分域鎖と密接な関係がある.ここで復習して覚えてください.
2):クローズドには、外部関数への参照が含まれます.
--Chromeブラウザでデバッグすると直感的に検証できます.
3):クローズド中に外部関数のthisオブジェクトにアクセスしたい場合は、クローズドに入る前に指定する必要があります.通常の方法は、クローズドに入る前に声明することです.var self=this.クローズドには外部関数のthisオブジェクトをselfで参照します.ここで突然にJSの中のthisの指向について考えてきました.自分のノートをアップロードするのを忘れました.ここではまず一つの文章を引用して、「JavaScriptの中のthisに深く入る」と書いてから、自分の学習ノートを追加します.
4):クローズドは2つの比較的によく使われている用途があり、一つはそれを利用して局部変数にアクセスすることができ、もう一つはその周辺作用領域の変数値を関数呼び出しが完了した後ではなくメモリに保存することができます.(他にも擬似プライベート変数や関数など)があります.
――JavaScript関数はすべてクローズドと言ってもいいですが、一つのネスト関数が定義されているスコープの外に導き出された時だけ、このようなクローズドが面白いです.