Jsの関数関連:関数を作成する3つの方法、関数の形参と実参、戻り値、return、break、continueの違い、リロードとargments、匿名関数、コールバック関数


Jsの関数関連:関数を作成する3つの方法、関数の形参と実参、戻り値、return、break、continueの違い、リロードとargments、匿名関数、コールバック関数
0.はじめに
0.1.事前に声明(hoist):プログラムが実行される前に、Jsエンジンはvar宣言の変数とfunction宣言の関数を、現在の作用領域のトップに集中して作成しますが、その場所にはその値が残っています.
0.2.関数も対象です.内部に保存されているのはデータではなく、コードセグメントです.
0.3.関数名は普通の変数で、関数名は関数オブジェクトのアドレスを保存することにより、関数オブジェクトを参照します.関数名を呼び出した場合、実際にエンジンに関数名変数参照の関数オブジェクトを見つけて、関数オブジェクトに保存されているコードセグメントに従ってプログラムを実行します.
0.4.functionはnew Functionの略字ですので、プログラムは一回のfunctionを実行するごとにnew Functionと同じです.新しい関数オブジェクトを作成します.
1.関数
1.1.定義:
関数はコードセグメントを再利用できるプログラム構造を保存し、このプログラム構造に名前を付けます.
1.2.作用:
コードの再使用を実現し、コードの重複を避ける.
1.3.アプリケーションシーン:
一部のコードがあれば、複数回使用される可能性があります.関数としてカプセル化して再起動しなければなりません.
1.4.関数を定義する(3つの方法)
(1)ステートメントで作成
function    (    ){
     
       ;
    return    
}
(2)値付けで作成
var    =function (    ){
     
       ;
    return    
}=
(3).newで作成
var    =new Function("  1","  2""   ;return   ")
1.5.関数の参照および参照
1.5.1.関数の参照
(1).イメージパラメータは、専用受信関数の実行に必要なパラメータの変数です.
(2)関数自体にデータが不足しています.外部からのデータ提供が必要で正常に実行できます.成形参を定義する必要があります.
数学にはy=2 x+1があります.ここのxは形参に相当します.xの実際の値を関数に代入すると、
関数は自分で定義したアルゴリズムに基づいて関数値yを計算します.
(3).変形はvarがないが、局所変数に属する.
1.5.2.関数の実装
関数を呼び出した場合、この関数アルゴリズムの実際の値を実行します.
function add(a,b){
     
    return a+b;
}
console.log(add(1,2));//3  //  1   2               
1.6.関数の戻り値
(1)関数の戻り値は、関数の実行結果です.
(2)関数を呼び出して関数の実行結果を求めたい場合、関数では戻り値を定義しなければなりません.
i.returnfunction add(a,b){
     
    if(a<0){
     
    return;
	}
    return a+b;
}
console.log(add(-1,3));//undefined
console.log(add(1,3));//4
ii.break      
for(var i=0;i<5;i++){
     
    if(i==3)break;
    console.log(i)//0 1 2
}
 console.log(i);//3
iii.continue        
for(var i=0;i<5;i++){
     
    if(i==3)continue;
    console.log(i)//0 1 2 4
}
 console.log(i);//5
1.7.匿名関数
1.7.1.定義:
関数の作成時に関数名を指定しない関数が匿名関数です.
1.7.2.長所:
メモリを節約して、使い終わったら自動的に釈放します.
1.7.3.使用シーン:
関数は一回だけ使用します.匿名関数を使用しなければなりません.
1.7.4.使用:
(1)コールバック関数
i.コールバック関数はほとんど匿名関数です.
ii.コールバック関数はすべてメイン関数のオーダーメイドであり、コールバック関数は使用済みでマスター関数と一緒にリリースされるべきである.
(2)匿名関数の自己調整
匿名関数を作成したら、すぐに自分を呼び出します.すべてのJsコードは匿名関数に包まれて、グローバル変数を使用して、グローバル汚染を避けるべきです.
標準書き方:
(function(    ){
     
       ;
    return    ;//            
    
})(    )
注意:2つの匿名関数は調整前後のセミコロンから省略しないでください.
(function(){
      ... })();//       
(function(){
      ... })();//       
1.8.コールバック関数
コールバック関数は、私たちが定義を担当しているだけで、呼び出しには責任がありません.他の関数の内部に任せて自動的に呼び出す関数です.コールバック関数の例:
(1).      
setTimeout(function(){
     },3000)  function(){
     }        ,     ,setTimeout 3    
(2).    every  :                  
arr.every(function(el,i,arr){
           })
2.オーバーロード(overload)
2.1.重載とは何か
同じ名前の関数が複数ありますが、参照リストによっては、呼び出し時に、自動的に入力されたパラメータの違いに応じて、対応する関数を選択して再負荷することができます.関数の個数を減らすことができます.使用者の負担を軽減します.
ポイントをつけました
2.2.Jsでは他の言語の重載文法はサポートされていません.
i.Jsは複数の同名関数が同時に存在することが許されないからです.
ii.複数の同名関数を同時に定義すると、最後の同名関数は、前の同名関数のすべてをカバーします.
2.3.argmentsオブジェクトによる重負荷を実現する
(1)関数のみを定義し、外形を定義しない
(2).それぞれの関数にargmentsオブジェクトがあります.
a.argmentsオブジェクトは、入力関数のすべてのパラメータ値を専門に受信するクラスのオブジェクトです.
b.クラス配列オブジェクト:
i.下付き文字があり、length属性がある.
ii.オブジェクトタイプであり、配列タイプではなく、配列タイプの関数を呼び出すことができません.
c.実際の参照値の個数が不確定な関数がある場合は、イメージリストの代わりにargmentsを使用しなければなりません.
d.使用:
i.作成不要、直接使用
i i.实参値を得る:argments[i]
iii.実参個数を得る:argments.length
e.実現する関数内では、argmentsにおける実パラメータの個数または実パラメータの内容が異なると判断して、対応する論理を動的に実行します.
2.4.原生関数の再負荷例:
arr.splice()
(1)    
arr.splice(i,       )
(2)     
arr.splice(i,0,  1,  2...)
(3)    
arr.splice(i,       ,  12...)