函数
- 是一个复杂数据类型
- 是一个承载代码的盒子
- 我们可以把一段代码放在一个盒子里面
- 在需要的时候直接调用这个盒子,就相当于在执行之前保存的那一段代码
函数的两个阶段
-
函数定义阶段
- 就是把代码放在盒子里面的过程
- 声明式函数
function fn() { 放一段代码 }
- 赋值式函数
var fn = function () { 放一段代码 }
- 一个函数如果只有声明,那么函数体内的代码时不会执行了
- 会等到调用的时候,才会执行函数内部的代码
-
函数调用阶段
- 就是把之前放在盒子里面的代码拿出来执行一遍
- 两种定义函数的方式,调用方法时一样的
- 函数名()
fn()
-
两个定义函数的方式,在调用上的区别
- 声明式函数 =>
function fn() { 放一段代码 }
- 调用可以在定义之前,也可以在定义之后
- 赋值式函数 =>
var fn = function () { 放一段代码 }
- 调用只能在定义之后
- 声明式函数 =>
函数的参数
-
参数分成两种
- 形参
- 等价于定义在函数内部的一个变量
- 只能在函数内部使用,不能再函数外部使用
- 它的值,由函数调用的时候的实参来决定
- 实参
- 就是再函数调用的时候给形参赋值的
-
参数的个数关系
- 一样多: 实参和形参一一对应
- 形参多: 前面的一一对应,多出来的形参没有实参赋值,再函数内部使用的时候就是 undefined
- 实参多: 前面的一一对应,多出来的实参,再函数内部没有形参接受,不能直接使用,但是不会报错
函数的返回值
- 决定了一个函数有没有结果
- 当函数执行完毕以后,会不会由东西给我返回
- 再函数内部有一个关键字,叫做 return
- 他就是给函数添加一个结果的关键字
- return 有几种情况
- 一个函数不写 return,那么返回值就是 undefined(没有返回值 => 没有结果)
- 一个函数写了 return,return 后面没有内容,那么返回值还是 undefined(没有返回值 => 没有结果)
- 一个函数写了 return,return 后面又写了内容,那么你写的什么内容,这个函数的返回值就是什么内容(有结果)