承载 JS 的家

82 阅读2分钟

函数的概念

  • 可以理解为一个盒子
  • 功能 :
    • 帮我们把项目中多个地方使用到的功能(代码段),抽离出来(就把他拿到那个小盒子,就不需要在多个地方书写重复的功能) 然后在需要的地方调用函数即可

函数的定义

  • 语法: function () {}
    • 两种定义函数的方法
      1. 赋值式定义 var fn = function () {} eg :
        var fn = function () {}
        console.log(fn)
        
      2. 声明式定义 function 函数名() {} eg :
        function fn1() {}
        console.log(fn1)
        

函数的调用

  • 语法: 函数名()

声明式与赋值式的区别

    1. 书写不同
    2. 打印时, 声明式 会带上函数名, 赋值式没有
    3. 调用时有差异
      • 声明式: 可以在函数定义前 调用

函数的参数

  • 函数的参数是做什么

    • 我们的函数在不写参数的时候, 可以正常执行。但! 功能相对单一
    • 如果函数想要真正的灵活起来, 在多个地方调用时 有不同的执行, 那么 我们可以通过 函数的参数来完成
  • 参数分为两个

    • 形参 函数名后(function) 后边的小括号内部, 每书写一个 就相当于在函数内部声明一个变量, 可以在函数内部去调用
    • 实参 调用函数时的小括号内部书写的值, 就是实参, 实参与形参为 一一对应的关系
  • 形参与实参会一一对应

    • 如果实参数量 少于 形参 那么前边的形参对应接受值, 没有对应实参 的 形参 值 为 undefined
    • 如果形参数量 少于 实参 那么会一一对应后, 多余的实参 无法通过 参数获取

函数的返回值

  • 语法: return 需要返回的内容
  • 函数默认返回值
    • 我们可以不写 return 函数会默认在代码段最后一行 写上 retrun undefined
  • 返回值的书写
    • 取决于 是否需要得到函数内部某一个变量的值, 如果需要 可以使用返回值将其返回, 如果不需要我们可以不写
  • return 的功能
    • 具有中断函数执行的功能;如果不想中断函数, 那么一定要将 return 放在函数的最后;除非就是想要通过 return 中断函数的运行

函数的预解析(和变量重名时的情况)

  • 函数的预解析, 可能会遇上同名变量的变量提升(变量的预解析) 直接以函数为主

  • 书写代码

    fn()    
    function fn() {
        console.log(1)
    }
    fn()  
    

    预解析之后(会把函数提升到当前作用域最顶层) (暂时理解为 当前代码最开始的第一行)

    1. fn() 不需要

    2. function fn() {} 需要预解析

    3. fn() 不需要

    4. function fn() {} 提升到了当前代码最开始的第一行...

    5. fn() 正常调用

    6. fn() 正常调用