函数

  • 函数是一件事 一件事就是一个函数
  • 函数的三要素是 意义 参数 返回值(无论调用还是声明 均要虑这三件事 方得始终)
  • 函数的执行逻辑(根据形参声明变量,根据实参为形参一一赋值,执行函数体)
  • 函数式编程
    • 回调(回过头来调用的函数)callback
      • 回调的意义:函数A的参数是一个函数B,函数B叫做回调函数(这里typeGroup()称为回调函数),函数B再函数A的函数体中被调用.
      • 按照数据类型分组的函数
        1. // 按照数据类型分组的函数(意义:按照类型分组; 参数:数组; 返回值:对象)
        2. function typeGroup(arr) {
        3. let result = baseFun.fenzuFun(arr, function (item) {
        4. return typeof (item);
        5. });
        6. return result;
        7. }
        8. // console.log(typeGroup(arr));
        ```javascript //根据某规则为某数组分组 //fun的意义:制定数组中每一个元素的组名 // 参数:每一个元素 // 返回值:每一个元素对应的组名

//函数意义:分组; 参数:数组,分组规则函数; 返回值:分组后的对象fanhuiObj{} function fenzuFun(arr, fun) { let fanhuiObj = {}; for (let i = 0; i < arr.length; i++) { let zuming = fun(arr[i]); if (!fanhuiObj[zuming]) { fanhuiObj[zuming] = []; } fanhuiObj[zuming].push(arr[i]); } return fanhuiObj; }

  1. - 递归(自己调用自己的函数)
  2. - 不到万万万不得已不应使用,因为这是在不断形成函数栈
  3. - 深复制(要考虑到对象套对象{{}})
  4. ```javascript
  5. // 深复制
  6. function deepCopy(obj) {
  7. let newObj = {}
  8. for (let i in obj) {
  9. if (typeof obj[i] === "object") {
  10. newObj[i] = deepCopy(obj[i])
  11. } else {
  12. newObj[i] = obj[i]
  13. }
  14. }
  15. return newObj
  16. }
  17. let dayinObj = deepCopy({name:"zhna",ooo:"kkk",K:[1,3,4,2],hui:"weare",duix:{kk:90}})
  18. dayinObj.duix.kk="ceshi";
  19. console.log(dayinObj);