函数定义、调用

137 阅读3分钟

函数定义:理解为一个盒子

当一段代码需要多次使用时,把这段函数放在抽离出来放在一个盒子里面(函数)
需要使用时调用即可。

如何使用函数:

1、定义(创建)函数:必须要有,没有无法调用

1.1语法:function 函数名() {}

-     赋值式定义: var fn = function() {}
-     声明式定义: function fn() {}
    -     function-------关键字
    -     fn-------------函数名
    -     ()-----------参数书写位置
    -     {}-------------代码,函数调用要执行的代码

1.2区别:

    -       1、书写:
            2、调用:赋值定义var fn = function() {}不能在定义前调用函数
                原因:会出现  变量提升
                    变量提升:在浏览器读js代码的时候,有一个与解析,此时会有一个变量提升。
              什么是变量提升:在预解析时将js内部的变量全部提升到当前作用的顶端(当前代码的最顶端)
              注意:只是把声明变量提升到最顶端
              

1.3赋值式为变量提升形式

    浏览器预解析
            fn()            //----fn()为调用函数不需要变量提升
    var fn = function(){
        console.log(1)      //----需要变量提升
    }
            fn()            //-----不需要变量提升


    变量提升后
            var fn;         //变量定义提到代码顶端
            fn()            //由于未定义变量类型和值   所以此时fn为undefined
    fn = function(){
       console.log(1)  ----//fn赋值为函数
    }
         fn()            //此时fn有值正常打印
     

1.4声明式声明提升: function fn() {}可以在定义前调用函数,浏览器在声明提升时,会将值也带着提升上去

      声明式变量提升:
        浏览器与解析
            fn()            //----fn()为调用函数不需要变量提升
        var fn = function(){
            console.log(1)      //----需要变量提升
       }
        fn()            //-----不需要变量提升
        
        /**
     * 声明式函数为声明提升
     * 声明提升后
     * function fn(){
     *       console.log(1)     //将值也提升到最上面
     * }
     * 
     * fn()         //正常打印
     * fn()
     * 
    */
  
    

2、调用:必须要有,否则函数无意义。

   只有一种写法
-     语法:函数名()例:fn()

3、函数参数 3.1为什么要有参数?

   使功能更灵活
   使函数更具差异性

3.2参数语法:

   1、形参:放在function或函数后的小括号中
   2、实参:当函数调用时函数名后面的小括号中

3.3参数的作用:

   1、形参:书写一个形参相当于在函数内创建一个变量,值由实参传递。
   2、实参:调用时用于给形参传递变量值。

3.4、实参数和形参数数量比一样时

   1、形参多、实参少
       第一个实参传递给对应的形参,后续没有实参,相当于只声明不赋值,输出undefined
   2、形参少、实参多
       实参的第一个传递给形参,后续的不通过形参获取。

3、函数的返回值

return 会把函数终止掉、 break(结束循环)

   返回赋值给变量
   不管是否写返回值,每个函数默认都会有返回值
   默认值为:undefined
   注意:函数的返回值具有中断的作用、写在最后面