函数的理解

  • 函数可以提升代码三性(复用性、扩展性、维护性)
  • 函数可以隔离变量作用域
  • 函数可以控制代码的调用(不调用不执行)
  • 函数的封装没有绝对的对错(取决于输入代码时的心情,对业务的理解等等条件)
  • 所有函数无论调用还是执行,都要搞清楚三要素( 意义、参数、返回值)

形参 实参与返回值的里写

  • 完成一件事的条件就是参数(参数分为形参和实参)
  • 形参是抽象的,实参是具体的
  • 参数为了解耦,一个函数中有多种情况,多种情况的不同点就是参数(也就是解耦。把一个事情反复做,叫耦合)
  • 实参就是形参的值(换而言之你想为内部变量进行赋值,通过实参进行传递,通过形参进行变量)
  • 封装函数时参数宁多不少(这样可提升其复用性,多的参数可设置为可选参数)
  • 返回值就是一个函数的执行结果
  • 如果需要内部变量传递到外部,那么就把它设置为该函数的返回值,这样就可以用一个变量接收函数的执行结果,从而得到该变量的值

回调

封装好过滤数组函数(10.12作业)
总结下原生函数fret的意义参数返回值

  • reduce

    • 意义 对数组中的每个元素执行一个由您提供的reducer函数(升序执行),将其结果汇总为单个返回值。
    • 语法 arr.reduce(callback(accumulator, currentValue[, index[, array]])[, initialValue])
    • 参数
      • callback 执行数组中每个值 (如果没有提供 initialValue则第一个值除外)的函数,包含四个参数:
        • accumulator 累计器累计回调的返回值; 它是上一次调用回调时返回的累积值,或initialValue(见于下方)。
        • currentValue 数组中正在处理的元素。
        • index 可选数组中正在处理的当前元素的索引。 如果提供了initialValue,则起始索引号为0,否则从索引1起始。
        • array 可选调用reduce()的数组
        • initialValue可选作为第一次调用 callback函数时的第一个参数的值。 如果没有提供初始值,则将使用数组中的第一个元素。 在没有初始值的空数组上调用 reduce 将报错。
    • 返回值 函数累计处理的结果
  • every

    • 意义 测试一个数组内的所有元素是否都能通过某个指定函数的测试。它返回一个布尔值。(若收到一个空数组,此方法在一切情况下都会返回 true。)
    • 语法 arr.every(callback(element[, index[, array]])[, thisArg])
    • 参数
      • callback 用来测试每个元素的函数,它可以接收三个参数:
        • element 用于测试的当前值。
        • index 可选用于测试的当前值的索引。
        • array 可选调用 every 的当前数组。
      • thisArg 执行 callback 时使用的 this 值。
    • 返回值 如果回调函数的每一次返回都为 truthy 值,返回 **true** ,否则返回 **false**

      闭包

      递归

      连贯操作

      函数的自执行