Jsの関数関連:関数を作成する3つの方法、関数の形参と実参、戻り値、return、break、continueの違い、リロードとargments、匿名関数、コールバック関数
14067 ワード
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)ステートメントで作成
1.5.1.関数の参照
(1).イメージパラメータは、専用受信関数の実行に必要なパラメータの変数です.
(2)関数自体にデータが不足しています.外部からのデータ提供が必要で正常に実行できます.成形参を定義する必要があります.
数学にはy=2 x+1があります.ここのxは形参に相当します.xの実際の値を関数に代入すると、
関数は自分で定義したアルゴリズムに基づいて関数値yを計算します.
(3).変形はvarがないが、局所変数に属する.
1.5.2.関数の実装
関数を呼び出した場合、この関数アルゴリズムの実際の値を実行します.
(1)関数の戻り値は、関数の実行結果です.
(2)関数を呼び出して関数の実行結果を求めたい場合、関数では戻り値を定義しなければなりません.
1.7.1.定義:
関数の作成時に関数名を指定しない関数が匿名関数です.
1.7.2.長所:
メモリを節約して、使い終わったら自動的に釈放します.
1.7.3.使用シーン:
関数は一回だけ使用します.匿名関数を使用しなければなりません.
1.7.4.使用:
(1)コールバック関数
i.コールバック関数はほとんど匿名関数です.
ii.コールバック関数はすべてメイン関数のオーダーメイドであり、コールバック関数は使用済みでマスター関数と一緒にリリースされるべきである.
(2)匿名関数の自己調整
匿名関数を作成したら、すぐに自分を呼び出します.すべてのJsコードは匿名関数に包まれて、グローバル変数を使用して、グローバル汚染を避けるべきです.
標準書き方:
コールバック関数は、私たちが定義を担当しているだけで、呼び出しには責任がありません.他の関数の内部に任せて自動的に呼び出す関数です.コールバック関数の例:
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.原生関数の再負荷例:
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.return ,
function 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, , 1, 2...)