• javaScript的function


    一、函数的声明方式

    1、普通的函数声明

    function box(num1,num2){
        return num1+num2;
    }

    2、使用变量初始化函数

    var box=function(num1,num2){
        return num1+num2;
    }

    3、使用Function构造函数

    var box=new Function("num1","num2","return num1+num2");

    第三种不推荐,因为这种语法导致解析两次代码(第一次解析常规ECMAScript代码,第二次解析传入构造函数中的字符串)
    ,从而影响性能,但我们可以通过这种语法来理解,函数是对象,函数名是指针的概念

    二、作为值的函数,函数可以传递函数

    1、函数的返回值可以来传递

        function box(sum, num) {
            return sum + num;
        }
    
        function sum(num) {
            return num + 10;
        }
        var result = box(sum(10), 10); //这里传递的是函数的返回值,和普通变量没区别
        alert(result);//输出30

    2、把函数本身作为参数来传递,而不是作为结果

        function box(sum, num) {
            return sum(num);
        }
    
        function sum(num) {
            return num + 10;
        }
        var result = box(sum, 10) //这里sum是函数,当做参数传递到另外一个函数里,而不是返回值
        alert(result); //20 

    三、函数内部属性

    1、arguments类数组对象,包含了传入函数中所有参数,这个对象还有一个callee的属性,该属性是一个指针,指向拥有这个arguments对象的函数

        function box(num) {
            if (num <= 1) {
                console.log("if" + num);
                return 1;
            } else {
                console.log("else" + num);
                //return num * box(num - 1);
                return num*arguments.callee(num-1);
            }
        }
        console.log(box(5));//120 5*4*3*2*1

    以上是一个阶乘或者是递归,box调用了自己,如果很多自我调用修改也许会麻烦,所以用到arguments.callee来调用自己

  • 相关阅读:
    数据库分表之Mybatis+Mysql实践
    mysql中You can't specify target table for update in FROM clause错误
    SQL中的limit用法
    在电脑端打开apk文件
    mysql进阶(五)数据表中带OR的多条件查询
    Java之——汉字转换拼音(大小写)
    数据库查询模糊匹配
    produces在@requestMapping中的使用方式和作用
    JSONP跨域请求数据报错 “Unexpected token :”的解决办法
    C# TcpClient的Connect超时处理(Timeout)
  • 原文地址:https://www.cnblogs.com/lgxlsm/p/5755267.html
Copyright © 2020-2023  润新知