Jsに関連する関数:関数を作成する3つの方法、関数の仮パラメーターと実パラメーター、戻り値、return、break、continue、オーバーロードと引数の違い、無名関数、コールバック関数
0.序文
0.1。事前宣言(ホイスト):プログラムの実行が始まる前に、Jsエンジンはvarによって宣言された変数とfunctionによって宣言された関数を現在のスコープの最上位に進め、中央に作成しますが、割り当てはそのままです。
0.2。関数は実際にはオブジェクトですが、内部ストレージはデータではなくコードセグメントです。
0.3。関数名は通常の変数であり、関数名は関数オブジェクトのアドレスを保存することで関数オブジェクトを参照します。関数名が呼び出されると、実際には、エンジンが関数名変数によって参照される関数オブジェクトを見つけ、関数オブジェクトに保存されているコードセグメントに従ってプログラムを実行します。
0.4。functionは実際には新しいFunctionの省略形であるため、プログラムが関数を実行するたびに、それは新しいFunctionと同等であり、新しい関数オブジェクトが作成されます。
1.機能
1.1。定義:
機能は、再利用可能なコードセグメントのプログラム構造を保存し、このプログラム構造に別の名前を付けることです。
1.2。役割:
コードの再利用を実現し、コーディングの繰り返しを回避します。
1.3。アプリケーションシナリオ:
1つのコードを複数回使用できる限り、コードを関数にカプセル化し、繰り返し呼び出す必要があります。
1.4。関数を定義する(3つの方法)
(1)。宣言付きで作成
function 函数名(形参列表){
函数体;
return 返回值
}
用声明方式创建函数会被声明提前,打乱了程序的执行顺序
(2)。割り当てによって作成
var 函数名=function (形参列表){
函数体;
return 返回值
}
用赋值方式创建函数的优点:仅=前的声明部分被提前,而函数定义留在原地
(3)。新規で作成
var 函数名=new Function("形参1","形参2","函数体;return返回值")
1.5。関数パラメーターと実際のパラメーター
1.5.1。関数パラメーター
(1)。仮パラメーターは、関数の実行時に必要なパラメーターを具体的に受け取る変数です。
(2)。関数に一部のデータがなく、外部データを正常に実行する必要がある場合、シェーピングパラメーターを定義する必要があります。
数学では、y = 2x + 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回だけ使用され、匿名関数を使用する必要があります
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.オーバーロード
2.1。オーバーロードとは
名前が同じでパラメーターリストが異なる複数の関数は、呼び出し時に渡される実際のパラメーターに従って自動的に選択でき、対応する関数がオーバーロードされるため、関数の数を減らし、呼び出し元の負担を軽減できます。
それに集中して〜
2.2。Jsは他の言語のオーバーロードされた構文をサポートしていません
i。Jsは、同じ名前の複数の関数が同時に存在することを許可しないため
ii。同じ名前の複数の関数が同時に定義されている場合、同じ名前の最後の関数は、同じ名前の以前のすべての関数を上書きします
2.3。引数オブジェクトを使用してオーバーロードを実現する
(1)。関数のみを定義し、仮パラメーターは定義しない
(2)。各関数には引数オブジェクトがあります
a.argumentsオブジェクトは、渡された関数のすべての引数値を具体的に受け取る配列のようなオブジェクトです
b。配列のようなオブジェクト:
i。下付き文字と長さ属性があります。
ii。配列型ではなくオブジェクト型であり、配列型関数を呼び出すことができない
c。関数の実際のパラメーター値の数が不明な場合は、仮パラメーターリストの代わりに引数を使用する必要があります
d。使用:
i。作成する必要はなく、直接使用する
ii。実際のパラメーター値を取得します:arguments [i]
iii。実際のパラメーターの数を取得します:arguments.length
e。実装する関数で、引数の実パラメータの数や実パラメータの内容が異なるかどうかを判断し、対応するロジックを動的に実行する
2.4。ネイティブ関数のオーバーロードの例:
arr.splice()
(1)删除元素
arr.splice(i,删除的元素个数)
(2)插入新元素
arr.splice(i,0,新值1,新值2...)
(3)替换元素
arr.splice(i,替换的元素个数,新值1,新值2...)