函数 篇章

apply、call、bind函数的⽤法和区别?

⽤法:

  • apply

    第⼀个参数: 绑定this

    第⼆个参数: 传⼊额外的实参, 以数组的形式

  • call

    第⼀个参数: 绑定this

    参数列表: 后续的参数以多参数的形式传递, 会作为实参

    bind(不希望obj对象身上有函数)

    1
    2
    var bar = foo.bind(obj)
    bar() // this -> obj

区别

  • call、apply和bind都可以改变函数的this指向
  • call、apply和bind第⼀个参数的是this要指向的对象
  • call、apply和bind都可以后续为函数传参,apply是将参数并成⼀个数组,call和bind是将参数依次列出
  • call、apply都是直接调⽤,bind⽣成的this指向改变函数需要⼿动调⽤。

什么是纯函数?如何编写纯函数?

纯函数:纯函数⼀般具有以下的特点:

  • 确定的输⼊⼀定会有确定的输出(外部环境的任何变化不会影响函数内部的操作产⽣的结果)

  • 纯函数的执⾏不会产⽣副作⽤。(函数内部的操作也不会对函数外部产⽣任何影响)

  • 纯函数在react和redux中应⽤⽐较多。

    • 编写纯函数:

    • //⼀般的数学⽅法可以写成纯函数,例如相加
      function sum(...args) {
      var result = args.reduce((perValue, item) => {
      return preValue + item
       }, 0)
      return result
      }
      

什么是函数柯⾥化?柯⾥化有什么作⽤?

函数的柯⾥化:

  • 将传⼊多个参数的函数转变成传⼊单个参数并且返回⼀个函数⽤于接收剩余的参数的函数
  • 每⼀层函数都接收⼀个参数并对参数进⾏处理。

柯⾥化的作⽤:

  • 单⼀职责:每⼀个函数只⽤处理传⼊的单个参数,每个函数的职责单⼀⽽且确定
  • 参数复⽤:可以拿到每⼀层函数执⾏的返回值作为⼀个新的函数,复⽤已经传⼊过的参数。

组合函数以及组合函数的作⽤?

组合函数

  • 组合函数是将多个函数组合到⼀起,进⾏依次调⽤的函数使⽤模式。

组合函数的作⽤:

  • 减少重复代码的编写,提⾼代码的复⽤性,便于开发。
  • 可以对任意个函数进⾏组合,返回新的具有多个被组合函数功能的新函数