函数
函数 可以理解为一个盒子
为什么要有函数, 函数功能是什么
帮我们把项目中多个 地方使用到的功能(代码段), 抽离出来(就把他拿到那个小盒子, 就不需要在多个地方书写重复的功能)
然后在需要的地方 调用函数即可
写一个函数(或者说一个完整的函数) 分为两部分
- 定义阶段
- 调用阶段
for (var i = 0; i < 3; i++) { // 假设 这是我当前项目中 多次使用到的一个常用功能, 比如说这个for循环在 多个地方都有用到
console.log(i)
}
函数的定义
语法:
function () {}
- 两种定义函数的方式
- 赋值式定义:
var fn = function () {} console.log(fn)- 声明式定义:
function fn1() {} console.log(fn1)
function () {} ---> 匿名函数
function 关键字, 表明后续紧跟一段代码, 是函数
() 内部书写, 参数
{} 内部书写, 函数调用执行时 的代码(可以理解为 要执行的代码)
function fn1() {} ---> 具名函数
funtion 关键字, 表明后续紧跟一段代码, 是函数
fn1 函数名, 将来可以通过 这个名字(变量) 去调用(去找到)本函数
() 内部书写, 参数
{} 内部书写, 函数调用执行时 的代码(可以理解为 要执行的代码)
函数的调用
管函数定义是如何定义的, 调用方式永远只有一种
语法: 函数名()
fn()
函数声明式和赋值式的区别
- 书写不同
- 打印时, 声明式 会带上函数名, 赋值式没有
- 调用时有差异 ; 声明式: 可以在函数定义前 调用
函数的参数
- 我们的函数在不写参数的时候, 可以正常执行
- 但! 功能相对单一
- 如果函数想要真正的灵活起来, 在多个地方调用时 有不同的执行, 那么 我们可以通过 函数的参数来完成
- 参数分为两个
- 形参 函数名后(function) 后边的小括号内部, 每书写一个 就相当于在函数内部声明一个变量, 可以在函数内部去调用
- 实参 调用函数时的小括号内部书写的值, 就是实参, 实参与形参为 一一对应的关系
- 形参与实参会一一对应
- 如果实参数量 少于 形参 那么前边的形参对应接受值, 没有对应实参 的 形参 值 为 undefined
- 如果形参数量 少于 实参 那么会一一对应后, 多余的实参 无法通过 参数获取
function fn1(a, b) { // 相当于 在函数内部创建两个变量 叫做 a 和 b, 他们的值有 实参决定
console.log(a, b)
}
fn1(1, 2) // 1 , 2
fn1('aaa', 'bbb') // 'aaa' 'bbb'
函数的返回值
语法: return 需要返回的内容
函数默认返回值
我们可以不写 return 函数会默认在代码段最后一行 写上 retrun undefined
我需要写返回值吗?
我什么时候需要写 返回值
返回值的书写 取决于 是否需要得到函数内部某一个变量的值, 如果需要 可以使用返回值将其返回, 如果不需要我们可以不写
return
具有中断函数执行的功能
如果不想中断函数, 那么一定要将 return 放在函数的最后
除非就是想要通过 return 中断函数的运行
function fn() {
console.log(1)
return // return 中断函数
console.log(2)
console.log(3)
console.log(4)
console.log(5)
}
fn()