为何要有默认参数?
降低函数调用的难度,试想一下,假设一个函数有三个变量,年龄,姓名,城市。假设大多数人来源于同一城市,那么就可以把城市值设置成默认参数。
如何设置函数的默认参数?
如下在声明变量的时候为参数设置了默认值。是利用了arguments这个关键字参数。这个arguments本质上是个数组。利用? 设置的默认值。
<script>
function example(a,b){
var a=arguments[0]?argumenes[0]:1;//设置a的默认值为0
var b=arguments[1]?arguments[1]:2;//设置b的默认值为1
return a+b;
}
alert(example())
//没有给参数传值
</script>
这个太废纸了。看写法2
<script>
function example(a,b){
var a=a || 1;//设置a的默认值为0
var b=b || 2;//设置b的默认值为1
return a+b;
}
alert(example())
//没有给参数传值
</script>
用||来设置默认参数。
获取参数个数
啥,参数个数你自己不知道几个么?因为有时候根据函数参数个数的不同,会设置不同的流程,所有就需要判断函数的参数个数。
<script>
function demo(){
var count = arguments.length //把参数的长度保存的count的变量中
return count;
}
alert(demo(1,2,3,4,5,6))
</script>
结果为6
举个例子下面这个函数根据参数的不同做出不同的反应。
<script>
function abs(a,b,c) {
if (arguments.length == 0) {
return 0;
}
else if (arguments.length == 1) {
return "一个参数"
}
else if (arguments.length == 2) {
return "二个参数"
}
else {
return 2;
}
}
alert(abs(1));
alert(abs(1,2));
alert(abs(1,2,3,4));
</script>
注意到abs(1,2,3,4)调用时有三个参数,而定义时只有三个,这没关系。 写多了不会报错,但是写的最后一个参数也没用。
如何获取未定义参数?
比如说你定义的函数里就两个参数,myfunction(a,b)。但是你调用时时myfunction(1,2,3)那么如何获取这第三个参数呢?
如图,用...rest关键字设置未定义参数。
深入解析 ES6:Rest 参数和参数默认值 - WEB前端 - 伯乐在线
事实上,利用rest参数是可以取代那个垃圾的argumnets对象的。。
举个例子
还是获取参数个数