函数的概念
- 可以理解为一个盒子
- 功能 :
- 帮我们把项目中多个地方使用到的功能(代码段),抽离出来(就把他拿到那个小盒子,就不需要在多个地方书写重复的功能) 然后在需要的地方调用函数即可
函数的定义
- 语法: function () {}
- 两种定义函数的方法
- 赋值式定义
var fn = function () {}
eg :
var fn = function () {} console.log(fn) - 声明式定义
function 函数名() {}
eg :
function fn1() {} console.log(fn1)
- 赋值式定义
var fn = function () {}
eg :
- 两种定义函数的方法
函数的调用
- 语法: 函数名()
声明式与赋值式的区别
-
- 书写不同
- 打印时, 声明式 会带上函数名, 赋值式没有
- 调用时有差异
- 声明式: 可以在函数定义前 调用
函数的参数
-
函数的参数是做什么
- 我们的函数在不写参数的时候, 可以正常执行。但! 功能相对单一
- 如果函数想要真正的灵活起来, 在多个地方调用时 有不同的执行, 那么 我们可以通过 函数的参数来完成
-
参数分为两个
- 形参 函数名后(function) 后边的小括号内部, 每书写一个 就相当于在函数内部声明一个变量, 可以在函数内部去调用
- 实参 调用函数时的小括号内部书写的值, 就是实参, 实参与形参为 一一对应的关系
-
形参与实参会一一对应
- 如果实参数量 少于 形参 那么前边的形参对应接受值, 没有对应实参 的 形参 值 为 undefined
- 如果形参数量 少于 实参 那么会一一对应后, 多余的实参 无法通过 参数获取
函数的返回值
- 语法: return 需要返回的内容
- 函数默认返回值
- 我们可以不写 return 函数会默认在代码段最后一行 写上 retrun undefined
- 返回值的书写
- 取决于 是否需要得到函数内部某一个变量的值, 如果需要 可以使用返回值将其返回, 如果不需要我们可以不写
- return 的功能
- 具有中断函数执行的功能;如果不想中断函数, 那么一定要将 return 放在函数的最后;除非就是想要通过 return 中断函数的运行
函数的预解析(和变量重名时的情况)
-
函数的预解析, 可能会遇上同名变量的变量提升(变量的预解析) 直接以函数为主
-
书写代码
fn() function fn() { console.log(1) } fn()预解析之后(会把函数提升到当前作用域最顶层) (暂时理解为 当前代码最开始的第一行)
-
fn() 不需要
-
function fn() {} 需要预解析
-
fn() 不需要
-
function fn() {} 提升到了当前代码最开始的第一行...
-
fn() 正常调用
-
fn() 正常调用
-