function:函数体内部的语句在执行时,一旦执行到return
时,函数就执行完毕,并将结果返回。因此,函数内部通过条件判断和循环可以实现非常复杂的逻辑。
如果没有return
语句,函数执行完毕后也会返回结果,只是结果为undefined
。
Rest 参数接受函数的多余参数,组成一个数组,放在形参的最后,形式如下:
function func(a, b, ...theArgs){
// ...
}
Rest参数和arguments对象的区别:
- rest参数只包括那些没有给出名称的参数,arguments包含所有参数
- arguments 对象不是真正的数组,而rest 参数是数组实例,可以直接应用sort, map, forEach, pop等方法
- arguments 对象拥有一些自己额外的功能
//实例1:遍历函数所有参数
function fn(){
if(arguments.length >= 1){
for(var i = 0;i<arguments.length;i++){
console.log(arguments[i])
}
} else {
console.log(0);
}
}
fn(10,2,3,5,2,4,5,2);
//rest参数
//实例2:每个参数乘以2
function fn1(a,b,...theArgs){
//map() :方法按照原始数组元素顺序依次处理元素。
//语法:array.map(function(currentValue,index,arr), thisValue)
//currentValue 必须。当前元素的值
//index 可选。当前元素的索引值
//arr 可选。当前元素属于的数组对象
return theArgs.map(function(nume){
console.log(2*nume)
});
}
fn1(4,5,2,3,5,4,2,4,2)
//实例3:计算圆面积的函数
//r:圆的半径
//pi:表示π的值,如果不传,默认为3.14
function fn2(r,pi){
//Math.pow(x,y) // x的y次幂 x——底数,y——幂数 x,y必须为数字
if(arguments.length < 2){
var pi = 3.1416;
console.log(r * Math.pow(pi,2));
} else{
console.log(r * Math.pow(pi,2));
}
}
fn2(10)
//实例4:取参数最大值
function fn3(a,b,c){
console.log(Math.max(a,b,c));
}
fn3(15, 20,35);