标红为重点
一、函数(方法)
1.什么是函数?
函数是一个可以重复使用的程序模块,该程序模块可以完成一个特定的功能
2.函数的定义:
function 函数名(【参数】){
函数体语句;
}
(1)function:是关键字,必须小写
(2)函数名:用户标识符(用户自定义)---建议:见名知意
(3)【参数】:'()'不能省略,'参数'是可选的(函数可以有参数,也可以没有参数)
(4)'{}':不能省略,表示函数的控制范围
(5)'函数体语句':实现功能的代码
function getSum(){
let sum = 0;
for (let i = 1; i <= 100; i++) {
sum += i;
}
return sum;
}
3.函数的调用:
(1)带返回值的函数(函数体中有return语句的函数):
let / var 变量 = 函数名(【参数】)
注意:关于函数的返回值
a.函数是否要返回值由具体的需求决定
b.函数返回值通过return语句来完成。在函数中一旦执行了return语句,当前函数就结束运行
例如:计算1+2+3+...+100之和。
function getSum() {
let sum = 0;
for (let i = 1; i <= 100; i++) {
sum += i;
}
return sum;
}
// 调用函数
let t = getSum();//getSum函数中return语句将sum的值返回后赋给变量t
console.log('1+2+3+...+100=', t);//1+2+3+...+100=5050
(2)无返回值的函数调用:
函数名(【参数】)
二、函数的参数:函数在运行是需要外部的数据才是实现具体的功能。这个外部的数据就是参数
1.形参:形式参数,是在函数定义时出现在函数首部的参数。形参没有实际值,只是一个占位符
2.实参:实在参数。是函数调用时出现在函数首部的参数,实参表示的是一个实际值
3. 在函数调用时,参数的传递方向是实参-->形参(传递方向是单向的,当形参发生改变后不会影响实参)
运行结果:
三、函数参数的数量:在JavaScript中允许函数的形参与实参不同
1.实参的数量多于形参的数量:函数可以正常运行,多余的实参被忽略
运行结果:33
2.实参的数量少于形参的数量:多出的形参是一个已声明未赋值的变量,它的值是undefined
运行结果:
四、arguments对象的使用
1.是内置对象:已经定好的,用户只要使用即可
2.作用:调用函数时,函数的实参都保存在arguments对象中
运行结果:
运行结果:78
强调:每个函数内部都有一个arguments对象,本质是一个数组,数组保存的是调用函数传递实参
练习7:定义一个函数,判断一个数是否是'完数'(完数:某个数的所有因子(不包括自身)之和等于它本身)
输出1000以内所有的'完数';
运行结果:
五.函数表达式:将定义的函数赋给一个变量,通过变量完成函数的调用和参数传递(即函数是匿名的)
1.定义:
var/let/const 变量名 = function (【参数】) {
函数体语句
}
2.调用
变量名 (【参数】)
六.函数的递归调用(重点、难点)
1.递归调用:函数自己调用自己(即在函数的函数体语句中调用自己)
2.递归算法:
(1)用递归方式解决问题的前提
a.问题可以进行分解,分解得到的新问题的解法与原问题的解法相同
例如: 8!-->8* 7!-->7* 6!-->...-->3* 2!-->2* 1!
b.问题的分解过程必须有明确的结束条件
(2)递归的过程
a.自上而下分解问题:得到最简单问题的解
b.自下而上回溯得到问题的解
3.代码的实现