1. 什么是函数?
对一段代码进行封装,封装的代码总是一个完成某项功能
简单理解: 封装的一个功能
2. 函数有何用?
完成某个操作(功能),可以完成多次
3. 为什么要使用函数?
3.1 减少代码的冗余度
3.2 后便后期对功能维护
4. 怎么使用?
5.函数声明式语法
function 函数名(){
函数体
}
(
5.1函数声明式定义的函数会被提升到整个脚本的最前面解析
5.2函数声明式在调用时可以放在函数的之前或者之后
5.3函数表达式在封装时用的多
)
6.函数表达式语法
var 变量名 = function(){
函数体
}
(6.1 函数表达式在调用时只能放在函数之后
6.2变量名相当于函数名
6.3函数表达是在事件中用的多
)
7.带有参数的函数(形参和实参需要一一对应)
function printSum(a,b){
let sum = a+b;
console.log(sum)
}
printSum(1,3);
8.封装形参表格
printTable(10,5);(10行5列)
function printTable(row,col){
document.write("<table>");
for (let i=1;i<=row; i++){
//行开始
document.write("<tr>");
for(let j=1;j<=col; j++){
//列开始
document.write("<td>");
//内容
document.write("1");
//列结束
document.write("</td>");
}
//行结束
document.write("</tr>");
}
//表格结束
document.write("</table>");
}
9.简单的封装
9.1形参替换实际值 9.2 用return替换输出
function returnMax(a,b,c){
let max = a>=b?a:b;
max = max>=c?max:c;
return max;
}
//9.3. 调用
let result = returnMax(12,34,56);
result = result + 10;
console.log(result);
1. 带有返回值函数注意点:
a.函数执行后的结果并没有输出,如果想查看结果,必须手动输出
b.函数遇到return就结束,不管后面还有多少都不执行
c.return只能在函数中使用
10.函数分类
10.1内置函数:无需定义就可以直接调用
10.2内置/系统函数:
11.递归函数
概念:函数内部对自身的调用!
eg:求1,3,5,7,9.......第n项的值 和 前n项的和
需求: 求1,3,5,7,9.......第n项的值 和 前n项的和
//1. 第一步: 假设递归函数已经写好
//第n项的值
function fn(n){}
//前n项的和
function fsum(n){}
//2. 第二步: 寻找递推关系
//第n项的值递推关系
fn(n) = fn(n-1) + 2 // 递推关系
fn(n-1) = fn(n-2) + 2
fn(n-2) = fn(n-3) + 2
....
fn(3) = fn(2) + 2
fn(2) = fn(1) + 2
fn(1) = 1 //临界出口
//前n项的和递推关系
fsum(n) = fsum(n-1) + f(n) // 递推关系
fsum(n-1) = fsum(n-2) + f(n-1)
....
fsum(3) = fsum(2) + f(3)
fsum(2) = fsum(1) + f(2)
fsum(1) = 1 //临界出口
//3. 将递推关系添加到递归函数形成递归体
//第n项的值
function fn(n){
return fn(n-1) + 2;
}
//前n项的和
function fsum(n){
return fsum(n-1) + f(n);
}
//4. 将临界条件添加到递推体中形成递归函数
//第n项的值
function fn(n){
if(n==1){
return 1
}
return fn(n-1) + 2;
}
//前n项的和
function fsum(n){
if(n==1){
return 1
}
return fsum(n-1) + f(n);
}