1.関数パラメーターのデフォルト値を指定します
function fn(a = 10, b =20){
console.log(a + b); // 30
}
fn()
2.関数の残りのパラメーター
restパラメーターの形式( "... variable name")は、関数の追加パラメーターを取得するために使用されるため、argumentsオブジェクトを使用する必要はありません。restパラメーターを持つ変数は配列であり、変数は追加のパラメーターを配列に配置します。
function sum(){
var args = arguments;
var res = 0;
for(var i = 0; i<args.length;i++){
res += args[i];
}
console.log(res);
}
sum(1,2,3,4,5,6)
変更後
function sum(...arr){
var res = 0;
for(var i=0; i<arr.length;i++){
res += arr[i];
}
console.log(res);
}
sum(10,1,2,3,4,5)
3.矢印機能
矢印「=>」を使用して関数を定義します
const fn = a => a;
const fn2 = function (a){
return a;
};
console.log(fn(1));
console.log(fn(2));
```javascript
const fn = (a, b) => a + b;
console.log(fn(1, 2)); // 3
const fn = (a, b) => {
a = a * 2;
b = b * 3;
return a + b;
};
console.log(fn(1, 2)); // 6
矢印関数には独自のthisオブジェクトがないため、使用される場合、その内部thisは、使用される環境のオブジェクトではなく、定義される環境のオブジェクトになります。
矢印関数のcallapply bindを使用して、この
内部の方向を変更することはできません。矢印関数の本体に引数オブジェクトはありません。使用する場合は、代わりにRestパラメーターを使用できます。
function fn (){
setTimeout(() => {
console.log(arguments);
},1000)
}
fn(1,2,3)
コンストラクターとして使用することはできません。また、新しいコマンドを使用することもできません。そうしないと、エラーがスローされます。
const Fn = (a, b) => a + b;
const f = new Fn(1, 2);
矢印関数はジェネレーターとして使用できません