美文网首页
函数全解

函数全解

作者: 韩宝亿 | 来源:发表于2020-01-10 15:27 被阅读0次

    1.函数是什么?

    子程序(routine):一个或多个语句组成,完成特定任务,相对独立。分为【函数】、【过程】、【方法】

    1.1函数

    Function,有返回值

    1.2过程

    Procedure,无返回值

    1.3方法

    Methods,类或对象中

    2.函数的返回值由什么决定?

        影响因素:

    2.1调用时输入的参数params

    2.2定义时的环境env

        举例:

    另一个例子:

    这个例子说a是定义时的a,不是执行时的a

    3.闭包

        如果在函数里面可以访问外面的变量,那么:

         【这个函数】+【这些变量】=【闭包】

    闭包+时间 = 很容易令人困惑

    一个常见的考题:

        请问下面打印出什么

    答案:6个6,因为六个函数公用一个i

    改成符合预期的结果:

    使用立即执行函数

    或者用现代浏览器的简单方法

    答案:0 1 2 3 4 5,每个函数配一个i即可

    结论:

       闭包的特点

           1.能让一个函数维持住一个变量

            2.但并不能维持这个变量的值

            3.尤其是变量的值会变化的时候

        对象是穷人的闭包

            1.对象也可以来维持住一个变量

            2.如果一门语言不支持闭包,你可以用对象代理

        闭包是穷人的对象

           如果一门语言不支持对象,你可以用闭包代理

    4.this真变态

    前置知识:

        如何声明一个函数?

    4.1箭头函数不支持this

    箭头函数如何处理a,就如何处理this

    即:

    箭头函数把this当作外部的变量,仅此而已。但是非箭头函数的this有很多特殊处理

    箭头函数不支持this指的就是:箭头函数对this与其他变量一视同仁,不会特殊对待

    4.2非箭头函数的this

    回顾上文函数的返回值影响因素有两个:1、调用时输入的参数;2、定义时的环境。

    有人说this是上下文,其实this就是一个隐式参数而已,箭头函数把this当作环境,普通函数把this当作参数。

    this的确定

    5.递归

    调用栈与弹栈

    调用栈用来记忆【回到哪】。如果需要记忆的过多,就会爆栈!

    6.柯里化

        柯里化(Currying),让所有函数只接受一个参数。

    6.1单参数函数接受两个参数

    6.2 柯里化一个函数

    把多参数函数,变成单参数函数

    7.高阶函数

        把函数作为参数或者返回值的函数

    JS内置的高阶函数:

        1.Function.prototype.bind

        2.Function.prototype.apply

        3.Function.prototype.call

        4.Function.prototype.sort

        5.Function.prototype.map

        6.Function.prototype.filter

        7.Function.prototype.reduce

    7.1 Function.prototype.bind

    7.2 Function.prototype.apply

    7.3 Function.prototype.call

    8.函数的组合

    相关文章

      网友评论

          本文标题:函数全解

          本文链接:https://www.haomeiwen.com/subject/luzpactx.html