js関数に必要な知識

小云云
小云云オリジナル
2018-02-28 14:31:131084ブラウズ

js では、参照型は 5 つの参照型 (Object、data、Array、re请输入代码gExp、Function) を含むデータ構造であることを知っておく必要があります。今回はFunctionのデータ構造についてお話します。 js では、関数は実際にはオブジェクトであり、各関数は Function 型のインスタンスです。他の参照型と同様に、参照型にはプロパティとメソッドがあります。

1. 関数を定義するにはいくつかの方法があります

  1. 関数宣言構文の定義

        function sum(num1,num2){
       return num1+num2;
      }
  2. 関数式の後にセミコロンがあることに注意してください。

  3.    var sum=function(num1,num2){
          return num1+num2;
    }
  1. 関数コンストラクターを使用します

    使用构造函数可以接收任意数量的参数,但最后一个参数始终被看成是函数体,而前面的参数则枚举出了参数
  2. var sum=new Function("num1","num2","return num1+num2")
もちろん、3 番目の方法はフレンドリーではないため、お勧めできません。

関数名は関数への単なるポインターであるため、関数名はオブジェクト ポインターを含む他の変数と何ら変わりません。つまり、関数には複数の名前がある可能性があります。

ここでの関数宣言と関数式の違いは何ですか? パーサーがデータを実行環境にロードするとき、関数宣言と関数式は異なる方法で処理されます。パーサーは最初に関数宣言を読み取り、コードの前に関数宣言コードを呼び出し可能にします。これは通常、関数宣言のホイスティングと呼ばれるものです。関数式は異なります。実際に実行される前に、関数パーサーが関数式が配置されているコード ブロックを実行するまで待つ必要があります。以下の 2 つの例を比較してください

console.log(sum(10,10));

function sum(n1,n2){
   return n1+n2;
}

以上代码会正常执行

再看!

console.log(sum(10,10));

var sum=function(n1,n2){
   return n1+n2;
}

以上执行器就会报错!
2. 関数はオーバーロードされていません

同じ名前の 2 つの関数が宣言された場合、結果として、後の関数が前の関数を上書きします。

function sun(a){
  return a+100;
}
function sun(a){
  return a+200;
}

var result=sum(2)//202
3. 関数の内部プロパティ

  • にはこれと引数が含まれます

    詳細は改めて説明しません

4. 関数のプロパティとメソッド

  • 、長さ、プロトタイプ

長さは、関数が受け取りを希望する名前付きパラメータの数を示します。

function a(name){
 //todo
}
function b(name,age){
 //todo
}
function c(){
 //todo
}

a.length //1
b.length //2
c.length //0
prototype 属性は参照型にとって非常に重要であり、具体的に説明するので、ここでは詳しく説明しません。

  • 各関数には、apply と call という 2 つの非継承メソッドが含まれています

これら 2 つのメソッドの目的は、実際には、this によって参照される値を特定のスコープ内に設定することです。機能本体も

まずは。 apply() メソッドは 2 つのパラメーターを受け取ります。1 つは関数が実行されるスコープで、もう 1 つはパラメーター配列です。2 番目のパラメーターは配列または引数のインスタンスにすることができます。

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

function test1(a,b){
    return sum.apply(this,arguments);
}

function test2(c,d){
    return sum.apply(this.[c,d]);
}

console.log(test1(1,1)) //2

console.log(test2(1,1)) //2
call メソッドと apply メソッド。違いは、call メソッドの 2 番目のパラメーターを 1 つずつリストする必要があることです。

call と apply を使用してスコープを拡張する最大の利点は、オブジェクトがどのメソッドにも結合されていないことです。

関連する推奨事項:

JS関数の例の詳細な説明

js関数の値によるパラメータの受け渡し

js関数の呼び出しと、暗黙的なパラメータの引数とこれに関連する問題

以上がjs関数に必要な知識の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。