JavaScript function関数の種類の詳細
3297 ワード
この記事では、一般関数、匿名関数、クローズド関数を紹介します.
目次一般関数:一般関数の特性を紹介します.同名のカバー、argmentsオブジェクト、標準の戻り値などです. 匿名関数:匿名関数の特性を紹介する:変数匿名関数、名前なし匿名関数. クローズド関数:クローズド関数の特性を紹介します.
1.一般関数1.1例
Jsでは関数は再ロードされていません.同じ関数名、異なるパラメータ署名の関数を定義します.後ろの関数は前の関数をカバーします.呼び出し時は、後の関数だけ呼び出します.
argmentsはC〓〓のparamsに類似しています.操作可変パラメータ:着信関数のパラメータ数は定義時のパラメータ数より大きいです.
関数が戻り値を指定していない場合、デフォルトでは「undefined」が返されます.
2.1.1変数、イベントに関数を割り当てることができることを説明します.
2.1.2例
2.2名前なしの匿名関数
2.2.1説明は、関数宣言時に、後にパラメータが続くことです.Js構文解析この関数の場合、コードはすぐに実行されます.
2.2.2例
3.クローズド関数3.1の説明
関数Aの内部は関数Bを宣言し、関数Bは関数B以外の変数を参照し、関数Aの戻り値は関数Bの参照とする.関数Bはクローズド関数です.
3.2例
3.2.1例1:全体参照と局部参照
実行関数partShowA()は、内部ではFnAを引用して局部変数shouwaのみを宣言しているので、実行が完了した後、作用領域の関係により、shouwaが占有する資源を放出します.
クローズドの鍵は、ロールエリアにあります.グローバル変数が占有するリソースは、ページ変換またはブラウザが閉じたときだけ解放されます.var allShowA=funA()の時、allShowAに相当してfunB()を引用して、funB()の中の資源をGCに回収されないで、だからfunA()の中の資源もできません.
3.2.2例2:パッケージ関数があります.
①関数funA内の変数の安全を保証します.外部から直接funAの変数にアクセスできないためです.
以上が本文の全部です.皆さんの勉強に役に立ちたいです.
目次
1.一般関数1.1例
function ShowName(name) {
alert(name);
}
1.2 Jsの同名関数の上書きJsでは関数は再ロードされていません.同じ関数名、異なるパラメータ署名の関数を定義します.後ろの関数は前の関数をカバーします.呼び出し時は、後の関数だけ呼び出します.
var n1 = 1;
function add(value1) {
return n1 + 1;
}
alert(add(n1));// , :3
function add(value1, value2) {
return value1 + 2;
}
alert(add(n1));// :3
1.3 argmentsオブジェクトargmentsはC〓〓のparamsに類似しています.操作可変パラメータ:着信関数のパラメータ数は定義時のパラメータ数より大きいです.
function showNames(name) {
alert(name);//
for (var i = 0; i < arguments.length; i++) {
alert(arguments[i]);// 、 、
}
}
showNames(' ',' ',' ');
1.4関数のデフォルトの戻り値関数が戻り値を指定していない場合、デフォルトでは「undefined」が返されます.
function showMsg() {
}
alert(showMsg());// :undefined
2.匿名関数2.1変数の匿名関数2.1.1変数、イベントに関数を割り当てることができることを説明します.
2.1.2例
// , 、
var anonymousNormal = function (p1, p2) {
alert(p1+p2);
}
anonymousNormal(3,6);// 9
2.1.3適用シーン①関数名の汚染を避ける.名前付きの関数を先に宣言して変数やイベントに値を付けると、関数名が悪用されます.2.2名前なしの匿名関数
2.2.1説明は、関数宣言時に、後にパラメータが続くことです.Js構文解析この関数の場合、コードはすぐに実行されます.
2.2.2例
(function (p1) {
alert(p1);
})(1);
2.2.3適用シーン①は一回だけ実行します.ブラウザのロードが完了したら、一回だけ実行して、あとは実行しない機能が必要です.3.クローズド関数3.1の説明
関数Aの内部は関数Bを宣言し、関数Bは関数B以外の変数を参照し、関数Aの戻り値は関数Bの参照とする.関数Bはクローズド関数です.
3.2例
3.2.1例1:全体参照と局部参照
function funA() {
var i = 0;
function funB() { // funB
i++;
alert(i)
}
return funB;
}
var allShowA = funA(); // : 1,2,3,4
function partShowA() {
var showa = funA();// : 1
showa();
}
allShowAは大域変数で、関数funAを参照しています.allShowA()を繰り返し実行すると、1,2,3,4などの積算値が出力されます.実行関数partShowA()は、内部ではFnAを引用して局部変数shouwaのみを宣言しているので、実行が完了した後、作用領域の関係により、shouwaが占有する資源を放出します.
クローズドの鍵は、ロールエリアにあります.グローバル変数が占有するリソースは、ページ変換またはブラウザが閉じたときだけ解放されます.var allShowA=funA()の時、allShowAに相当してfunB()を引用して、funB()の中の資源をGCに回収されないで、だからfunA()の中の資源もできません.
3.2.2例2:パッケージ関数があります.
function funA(arg1,arg2) {
var i = 0;
function funB(step) {
i = i + step;
alert(i)
}
return funB;
}
var allShowA = funA(2, 3); // funA arg1=2,arg2=3
allShowA(1);// funB step=1, 1
allShowA(3);// funB setp=3, 4
3.2.3例3:親関数funA内の変数共有
function funA() {
var i = 0;
function funB() {
i++;
alert(i)
}
allShowC = function () {// allShowC , funB i
i++;
alert(i)
}
return funB;
}
var allShowA = funA();
var allShowB = funA();//allShowB funA,allShowC , allShowB i
3.3適用シーン①関数funA内の変数の安全を保証します.外部から直接funAの変数にアクセスできないためです.
以上が本文の全部です.皆さんの勉強に役に立ちたいです.