JS中级-数组&函数

1) var let const的区别
2) 嵌套循环   双重for循环执行流程
3) 数组内置方法
4) 函数

  1. var let const的区别

    区别: 变量提升 产生块级作用域 同名变量重复声明 变量重新赋值
    var 会 不会 可以 可以
    let 不会 会 不能 可以
    const 不会 会 不能 不能

    使用注意:
    let定义变量: 数据可以变化
    cosnt定义常量: 数据一旦赋值就不能更改

     小结: 变化使用let  不变使用const
    

    注意:
    const锁定对象的地址,没有锁定数据,所以数据可以修改


  1. 嵌套循环-双重for循环 [ 了解 ]

    //行
    for(let i=1; i<=4; i++){

     //列
     for(let j=1; j<3; j++){
     
         console.log( '星' )
     
     } 
    

    }

    执行过程:
    i=1 j=1 j=2
    i=2 j=1 j=2
    i=3 j=1 j=2
    i=4 j=1 j=2


  1. 数组内置方法 [ 重点 ]

    1. 6-不影响原数组
      arr.concat() : 合并数组
      arr.join() : 数组拼接字符串
      arr.slice() : 截取数组元素
      arr.includes(): 判断是否含有某个元素

      arr.indexOf(): 返回数组元素索引
      arr.flat() : 数组扁平化

    2. 7-影响原数组
      arr.push() : 数组末尾追加元素
      arr.unshift() : 数组之前追加元素
      arr.pop() : 删除最后一个元素
      arr.shift() : 删除第一个元素
      arr.splice() : 添加 删除 替换元素

      arr.reverse() : 数组逆序
      arr.sort() : 数组排序

    3. 7-遍历数组

      1. 筛选出第一个满足条件的值
        arr.find(function (v, i){

      })

      1. 筛选出第一个满足条件值的索引
        arr.findIndex(function (v, i){

      })

      1. 处理数据
        arr.map(function (v, i){

      })

      1. 过滤数据 == 数组过滤
        arr.filter(function (v, i){

      })

      1. 判断数组元素是否都满足指定条件
        arr.every(function (v, i){

      })

      1. 判断数组元素是否有一个满足指定条件 结果: 布尔值
        arr.some(function (v, i){

      })

      1. 遍历数组
        arr.forEach(function (v){

      })

      面试题: forEach 和 map区别? 区别: 是否有返回值


  1. 函数 [ 重点 ]

    1. 2种定义方式

      1> 声明式
      function 函数名(形参1, 形参2, …形参n){ //具名函数

           return 结果;
       }
      

      2> 表达式
      const 变量名 = function (形参1, 形参2, …形参n){ //匿名函数

           return 结果;
       }
      
    2. 实参对象arguments - 了解

      1> 每个函数都有一个实参对象: arguments, ES6箭头函数没有

    3. 参数默认值 - 重点
      function 函数名(a, b, c=默认值, d=默认值){

      }

      注意点: 有默认的参数应该在最后

    4. 函数封装 - 重点
      封装思想: 封装为复用, 变化作参数

    5. 递归函数 - 了解

      1> 概念: 函数内部对自身的调用 === 自己调自己

      2> 理解:

       递: 递进去   递归入口: 什么条件下递进去   (调用自己)
       归: 归回来   递归出口: 什么条件下归回来   (不调用自己)
      

      3> 案例:
      需求: 求1 3 5 7 9…第n项的值

       规律: 
           f(n) = f(n-1) + 2;
           f(n-1) = f(n-2) + 2;
           ...
           f(3) = f(2) + 2
           f(2) = f(1) + 2;
           f(1) = 1
       
       递归函数: 
           function f(n){
       
               if( n === 1){ //出口
                   return 1
       
               }else{        //入口
                   return f(n-1) + 2;
               }
       
           }
      

      4> 递归使用场景?
      复杂问题 ====> 简单化

       复杂问题 ===> 大问题 ===> 小问题 ===> 更小的问题 ===> 简单问题
      

      5> 递归缺点?

       递归过程中会产生大量的执行栈,会常驻内存,严重时造成内存溢出 - 尽量少使用
      

      6> 递归写法
      a. 递归是一个函数
      b. 必须有一个参数
      c. 函数内部,必须有出口或者入口

       function 函数名(参数){
       
           ....
           ....
       
           //入口
           if(参数满足条件){
               //调用自己
           }
      
      
           //出口
           if(参数满足条件){
               //不在调用自己
           }
      
       }
      
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值