Function クラス
Definition
Function クラスは、開発者が定義した任意の関数を表すことができます。 Function クラスを使用して関数を直接作成する構文は次のとおりです:
var function_name=new。 Function(agrument1,agrument2,. ..,argumentN,function_body);
各引数はパラメータであり、最後のパラメータは関数本体 (実行されるコード) です。
例:
関数SayHi(sName ,sMessage){
alert("Hello " sName "," sMessage);
}
次のように定義することもできます:
var SayHi=new Function("sName" ,"sMessage","alert("Hello" sName "," sMessage);");
注: Function コンストラクターを使用して関数を作成できますが、これは使用しないことをお勧めします。従来の方法よりもはるかに時間がかかり、関数を定義するのが簡単になります。ただし、すべての関数は Function クラスのインスタンスと見なす必要があります。
プロパティとメソッド
関数は参照型であるため、ECMAScript によって定義される属性の長さによって、関数で予期されるパラメーターの数が宣言されます (例:
function doAdd(iNum){
alert(iNum 10); }
function SayHi (){
alert("Hi");
}
alert(doAdd.length);//outpus 1
alert(sayHi.length);//outpus 0
Function オブジェクトには、すべてのオブジェクトと共有される標準の valueOf() メソッドと toString() メソッドもあります。どちらのメソッドも関数のソース コードを返します。これはデバッグ時に特に役立ちます。
例:
function doAdd( iNum){
alert(iNum 10);
}
alert(doAdd.toString());
このコードは doAdd() 関数のテキストを出力します。
クロージャ
定義
いわゆるクロージャは、計算する必要のない変数を含む関数の字句表現を指します。つまり、関数は関数の外で定義された変数を使用できます。 ECMAScript でのグローバル変数の使用は、クロージャの簡単な例です。
例:
var sMessage=" Hello World" ;
function SayHelloWold(){
alert(sMessage);
}
sayHelloWorld();
別の関数内で関数を定義すると、クロージャが
var iBaseNum =10;
function addNumbers(iNum1,iNum2){
function doAddtion(){
return iNum1 iNum2 iBaseNum;
return
}
この関数 addNumbers() には関数 doAddtion() (クロージャ) が含まれています。内部関数は、外部関数のパラメーター iNum1 および iNum2 とグローバル変数 iBaseNum の値を取得するため、クロージャです。 addNumbers() の最後のステップでは、内部関数を呼び出し、2 つのパラメーターとグローバル変数を加算し、それらの合計を返します。ここで理解すべき重要な概念は、 doAddtion() 関数はパラメーターをまったく受け入れず、実行環境から取得したパラメーターを使用するということです。
ご覧のとおり、クロージャは ECMAScript の非常に強力で多用途な部分であり、複雑な計算を実行するために使用できます。他の高度な関数と同様に、クロージャは非常に複雑になる可能性があるため、使用するときは注意してください。
この記事のサンプルコード