函数定义阶段:把代码装进 “盒子” 里面
函数调用阶段:把 “盒子” 里面的代码执行
函数定义阶段:
语法:
function fn() {
装在盒子里面的代码
…
}
或
var fn = function(){
装在盒子里面的代码
…
}
函数调用阶段:
语法:
函数名()
形参:一个特殊的变量
特殊:只能在函数内部使用
值:函数调用的时候,由实参确定
实参:给形参进行赋值
规则:按照从左到右的顺序依次赋值
利用函数求10的阶乘
…
// 定义一个函数
function fn() {
var total = 1
// 开始 : 10
var n = 10
// 结束 : 1
while (n >= 1) {
// 将每一个数字阶乘到 total 变量
total *= n
// 修改初始值
n--
}
// 输出阶乘结果
console.log(total)
}
// 调用这个函数
fn()
…
函数的返回值
给函数调用添加一个结果
语法:function fn() {
装在盒子里面的代码
…
return结果
}
递归函数
递归就是一个函数在它的函数体内调用它自身。执行递归函数将反复调用其自身,每调用一次就进入新的一层。递归函数必须有结束条件。当函数在一直递推,直到遇到墙后返回,这个墙就是结束条件。所以递归要有两个要素,结束条件与递推关系
function fn(n){
return n * fn(n-1);
}
一个函数调用了它自身,这种现象就称为递归
function fn(n){
if(n === 1) return 1;
return n * fn(n-1);
}
当 n 为 1 的时候, 到达折返点, 该 归 回来了
一个函数调用了自身,并设置了结束条件,这个函数才是一个正确的递归函数