zoukankan      html  css  js  c++  java
  • 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)
  • 相关阅读:
    php基础学习(1)
    php基础学习-Apache和MySQL环境配置
    web前端面试题记录
    js面向对象-class类的基本使用es6语法规范(31-64)
    js面向对象-class类的基本使用es6语法规范(1-30)
    javascript this指向
    git操作
    axios的二次封装和api接口规范
    linux下mysql开启二进制日志
    MySQL数据库设计常犯的错以及对性能的影响
  • 原文地址:https://www.cnblogs.com/wykbk/p/6884377.html
Copyright © 2011-2022 走看看