javascript--函数(二)

一、函数的重载

  在调用函数的时候,传入的参数的个数与类型不同,执行不同的代码块。

  函数重载的模拟

function chongzai(){
            if(arguments.length==1){
                if(typeof arguments[0]=='number'){
                    alert('这是第一种形式')
                }else if (typeof arguments[0]=='string'){
                    alert('这是第二种形式')
                }
            }else if(arguments.length==2){
                if(typeof arguments[0]=='number'&& typeof arguments[1]=='number'){
                    alert('这是第三种形式')
                }else if (typeof arguments[0]=='string'&& typeof arguments[1]=='string'){
                    alert('这是第四种形式')
                }
            }
        }
        chongzai(1);
        chongzai('a');
        chongzai(1,1);
        chongzai('a','a')

二、回调函数

  通过函数的指针来调用函数

      ——把一个函数的指针作为另一个函数的参数,当调用这个参数的时候,这个函数就叫做回调函数。

  练习:算数运算,以回调函数的方式进行不同的运算

//将不同的运算类型当成参数传递给函数result,提高代码的运行效率
function result(num1,num2,type){
    console.log(type(num1,num2))
}
function jia(a,b){
    return a+b;
}

function jian(a,b){
    return a-b;
}
function cheng(a,b){
    return a*b;
}
function chu(a,b){
    return a/b;
}
result(6,2,jia)
result(6,2,jian)
result(6,2,cheng)
result(6,2,chu)

三、函数的递归

  在函数内部直接或间接的调用自己

  练习:1.斐波那契数列

//         斐波那契数列 1 1 2 3 5 8 13 21   值为前两个数的值之和
function feibo(n){
    if(n==1||n==2){
        return 1;
    }else{
         return feibo(n-1)+feibo(n-2);        
    }
}
alert(feibo(8))

  2.计算1+2+3+4+...

function fn(num){
    if(num==1){
        return 1;
    }else{
        return num+fn(num-1)
    }
}    
var num=fn(5)
console.log(num)

//解析
//在第一次运行结果  5+fn(4)
//第二次运行结果    5+4+fn(3)
//第三次运行         5+4+3+fn(2)
//第四次运行         5+4+3+2+fn(1)
//第五次运行         5+4+3+2+1
    

四、练习:做出如下效果图,并封装成函数,传入参数可形成任意行的效果图

  

    function star(num) {
        for(var i=1;i<=num;i++){
            for(var j=num;j>=i;j--){
                document.write("&nbsp")
            }
            for(var h=1;h<=i;h++){
                document.write(" *")
            }
            document.write('</br>')
        }
    }
    star(10)
原文地址:https://www.cnblogs.com/wykbk/p/6884377.html