javascript--函数(二)

来源:互联网 发布:网络互联协议的端口号 编辑:程序博客网 时间:2024/05/30 05:15
一、函数的重载

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

  函数重载的模拟

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)

 

原创粉丝点击