JavaScriptのFunction類

1332 ワード

各関数は、Functionタイプの例です.
関数を作成する3つの方法:
//    
function sum(num1, num2) {
  return num1+num2;
}

//   
var sum = function(num1, num2) {
  return num1+num2;
};

//   
var sum = new Function(“num1”, “num2”, “return num1+num2;”);
3つの方法で関数を作成しない方がいいですが、3つの方法はより明確に見ることができます.関数はオブジェクトです.newの実装によって得られます.関数名はこのオブジェクトを保存する参照です.
すなわち、関数名は特殊な変数ですから、JavaScriptには、関数がないという説があります.上書きだけです.
関数宣言の昇格:関数の宣言は、スコープの最上階まで引き上げられ、関数の作成前に関数を呼び出しても、エラーが発生しません.
alert(sum(1, 2));
function sum(a, b) { return a + b }
関数といえば特殊な変数ですので、値の関数としては以下のような役割があります.
  • 関数は、別の関数のパラメータとして機能します.
  • 関数は、別の関数の戻り値として機能します.
  • 関数の内部には二つの特殊なオブジェクトがあります.
    アーgments:argmentsはクラスの配列オブジェクトで、関数を呼び出したときに着信関数というパラメータが保存されています.argmentsはcaleeという属性があります.argments.caleeはこの関数の参照を保存しています.
    this:thisは、関数が実行する環境オブジェクトを参照します.
    関数は対象自体に二つのオブジェクトがあります.length、prototype.
    length:length属性は、関数を宣言する際のパラメータの個数です.
    prototype:prototypeにはFunction類の実例的な方法が保存されています.
    関数は対象として3つの方法があります.call()、apply()、bind().
    3つの方法の役割は関数内部のthisオブジェクトを変更する参照である.
    apply():applyメソッドの最初のパラメータは、メソッドの関数を呼び出すthisの代わりにオブジェクトであり、2番目は行列であり、関数のパラメータを保存しています.
    call():call法の最初のパラメータの役割はcallと同じであり、異なるのは、後のパラメータは複数であってもよく、それぞれは関数のパラメータである.
    bind():bind法は作用領域を変更することもできますが、異なる場合、この方法は新しい関数を返します.この新しい関数の中のthisはbind法から入ってきたパラメータオブジェクトです.