开启函数篇章,启航新梦想,为了梦想奋斗,加油,追梦人

130 阅读4分钟

一、函数的使用

  1.声明函数 : 是一个存储过程,此时不会执行函数体代码  
      function 函数名(){
          函数体代码: 需要存储的一段代码
      }

  2.调用函数 : 执行函数体代码
      函数名()


 //1.声明函数 : 把代码存入容器中
//2.调用函数: 执行函数体代码

二、 函数是一种用于存储代码块的复杂数据类型

        * 作用:解决代码复用问题
    
    1.声明函数 : 声明函数只是把代码存起来,不会执行函数体  
        function 函数名(){
            函数体代码: 需要存储的一段代码
        }

    2.调用函数 : 执行函数体代码
        函数名()

    3.函数参数 : 调用者 传递数据 函数
        3.1 传:调用者
            函数名(实际参数)
        3.2 收:函数
            function 函数名(形式参数){   //函数体代码 }
        3.3 函数传参本质: 实参给形参赋值的过程
            (1)函数传参是按照传入顺序一一赋值
            (2)函数每一次调用传参过程都是独立的,互不影响
            (3)函数 形参数量 和 实参数量 可以不一致的
            
          

三、 逻辑中断

    1.函数默认参数,我们自己在开发中使用不多。(了解后面很多js框架函数默认参数底层原理)
    2.函数默认参数 使用 逻辑运算符短路运算(逻辑中断)
        2.1 短路运算: 左边式子就可以决定结果,右边式子不执行
            && : 一假则假
            || : 一真则真
             ! : 取反(没有短路运算,因为只有一个式子)
        2.2 短路规则:
            && : 找假。  左边式子值可以转成false,则无条件返回左边式子的值,右边不执行。 反之无条件返回右边式子的值。
            || : 找真。 左边式子值可以转成true,则无条件返回左边式子的值,右边不执行。 反之无条件返回右边式子的值。 
    
    */
            

四、简单梳理函数的每一个步骤

       0.函数语法  : 函数是一种用于存储代码块的复杂数据类型
        * 作用:解决代码复用问题
       1.声明函数 : 声明函数只是把代码存起来,不会执行函数体  
        function 函数名(){
            函数体代码: 需要存储的一段代码
        }

       2.调用函数 : 执行函数体代码
        函数名()

      3.函数参数 : 调用者 传递数据 函数
        3.1 传:调用者
            函数名(实际参数)
        3.2 收:函数
            function 函数名(形式参数){   //函数体代码 }
        3.3 函数传参本质: 实参给形参赋值的过程
            (1)函数传参是按照传入顺序一一赋值
            (2)函数每一次调用传参过程都是独立的,互不影响
            (3)函数 形参数量 和 实参数量 可以不一致的

    4.函数返回值 : 函数 传递数据 给调用者
        4.1 传 : 函数
            function 函数名(){ return 值 }
        4.2 收 :  调用者
            let 变量名 = 函数名()
        4.3 注意点
            (1)函数return关键字后面的代码不会执行的
                * 只要有return关键字,函数体立即结束执行。
            (2)如果函数没有return,则默认返回值是undefined
            

五、开关思想的浅尝

开关思想主要分为三个流程
(1)声明一个开关变量(一般默认为true)
(2)遍历数组,判断每一个元素是否满足条件,遇到不满足修改开关变量为false
   * 遇到满足的不用修改,因为默认就是true
(3)返回开关变量值


六、作用域及匿名函数初识

      /* 
        作用域的简介
     1.js变量作用域: 变量可以使用的区域
        * 作用:避免变量污染(变量名相同导致代码冲突)
     2.js三种作用域
        2.1 全局作用域(全局变量)  : 在函数外面let的变量
        2.2 局部作用域(局部变量) :   在函数里面let的变量
        2.3 快级作用域(快级变量) :   在分支或循环大括号中let的变量
     */   
     
    
    作用域的分类及使用方式
    1.js变量作用域: 变量可以使用的区域
        * 作用:避免变量污染(变量名相同导致代码冲突)
     2.js三种作用域
        2.1 全局作用域(全局变量)  : 在函数外面let的变量
        2.2 局部作用域(局部变量) :   在函数里面let的变量
        2.3 快级作用域(快级变量) :   在分支或循环大括号中let的变量

    3.作用域链: 默认情况下,代码处于全局作用域(0级链),当声明一个函数之后就会开辟一个局部作用域(1级),而函数里面又可以声明一个函数,又会形成新的作用域(2级),以此类推形成的结构称之为作用域链
    
    4.变量访问规则: 就近原则
        * 当你在一个作用域访问变量的之后,首先会看当前作用域有没有声明。如果有则访问。 没有则往上级作用域查找,有没有声明。有则访问,没有则继续往上。直到作用域最顶端0级,如果还没有找到。则程序报错  xxx is not defined
     

        1.匿名函数 : 没有函数名的函数
    2.匿名函数作用 : 开辟局部作用域,避免全局变量污染
             
     let fn = function(){
        alert(1111)
    }