1、带参数默认值的函数
js的函数声明过后,在调用这个函数的时候可以忽略这个函数所带的参数。即声明的函数原本带有参数,但是在调用时不传参也不会报错,那些参数会有一个默认的值
function test(arg1,arg2){
console.log(arg1);//undefined
console.log(arg2);//undefined
}
test();
若是在java中,会强制要求输入参数,JS的结果为undefined
在ES6中,可以直接给函数的参数设置一个默认值
function test(arg1,arg2=30){
console.log(arg1);//undefined
console.log(arg2);//30
}
test();
function test(arg1="这是第一个参数",arg2){
return arg1+arg2;
}
console.log(test());//这是第一个参数undefined
这是一个分割线//
function test(arg1="这是第一个参数",arg2){
return arg1+arg2;
}
console.log(test(30));//NaN
//这里我们传的参数是30而不是“30”,数字30和undefined相加的结果为NaN,当传入"30"时,结果为30undefined
上边函数有两个参数,当我们调用函数时只传入了一个参数,此时这个参数为第一个参数,但是如果我们想只传入第二个参数,将第一个参数设置为undefined
function test(arg1="这是第一个参数",arg2){
return arg1+arg2;
}
console.log(test(undefined,"这是第二个参数"));//这是第一个参数这是第二个参数
2、参数默认值为表达式的函数
function expression(name,say=getStr()){
console.log(name+say);
}
function getStr(){
return "Hello!"
}
expression("xhh");//xhhHello!
3、函数的rest参数
当为函数传入多个参数时,可以使用arguments对象,例如
function foo(){
for(let num of arguments){
console.log(num);
}
}
foo(1,2,3);
/*
1
2
3
*/
ES6中新增了rest参数(形式为…变量名)。获取剩余的参数,函数中所有多余的参数都会放进数组中然后赋值给这个rest参数。
function foo(...args){
console.log(args);
}
foo(1,2,3,4,5);//(5) [1, 2, 3, 4, 5]
注意:rest后边不允许再有其他的参数,否则就会报错。
参考:
https://www.cnblogs.com/swzx-1213/p/12628164.html
https://blog.csdn.net/hjc256/article/details/86542058