1、函数的使用?
掌握函数语法,把代码封装起来
函数的声明语法:
function 函数名() {
函数体
}
2、为什么要使用函数?
可以实现代码复用,提高开发效率
3、 函数的命名规范?
和变量命名基本一致
尽量小驼峰命名法
前缀应该为动词
命名建议:常用动词约定
如
can :判断是否可执行某个动作
has:判断是否含义某个值
is:判断是否为某个值
get:获取某个值
load:加载某些数据
4、函数是用哪个关键词声明的?
function
5、函数不调用会执行吗? 如何调用函数?
函数不调用就不会执行
//getSum()是形参
function getSum() {
//函数体
let num1 = 10
let num2 = 20
console.log(num1 + num2)
}
//调用函数 getSum(实参)
getSum()
6、函数的复用代码和循环重复代码有什么不同?
循环代码写完立即执行,不能很方便控制执行位置。
函数可以随时调用,随时执行,可重复调用
如
function getSum() {
let num1 = 10
let num2 = 20
console.log(num1 + num2)
}
getSum()
getSum()
7、函数传递参数的好处是?
可以极大的提高了函数的灵活性
**
**
8、函数参数可以分为那两类?怎么判断它们是哪种参数?
**
**
函数可以分为形参和实参
函数声明时,小括号里面的是形参,形式上的参数
函数调用时,小括号里面的是实参,实际的参数
形参和实参尽量保持个数一致。
如
// 求 2-10累计的和
// num1,num2 叫形参
function getSum10(num1,num2){
let sum = 0
for(let i = num1 ; i <= num2 ; i++) {
sum += i
}
document.write(`2-10直接累计的和${sum}`)
}
// 2,10叫实参
getSum10(2,10)
9、getSum([100,200,300])里边有几个实参?
1个 [100,200,300]
10、为什么要让函数有返回值
函数执行后得到结果,结果是调用者想要拿到的(一句话,函数内部不需要输出结果,而是返回结果)
对执行结果的扩展性更高,可以让其他的程序使用这个结果
11、函数的返回值的关键字是什么? 有什么注意事项?
return关键字
细节:
1、在函数体中使用ruturn 关键字能将内部的执行结果交给函数外部使用
2、函数内部只能出现1次return,并且return后面diamond不会再执行,所以return后面的数据不要换行写
3、return 会立即结束当前函数
4、函数可以没有return,这种情况函数默认返回值为undefined</font>
案例 一 函数调用基础版
// 函数调用,这些函数体内的diamond逻辑会执行
function sayHi() {
document.write(`你好`)
}
// 函数一次声明可以多次调用,每次函数调用函数里面的代码会重新执行一次
sayHi()
sayHi()
案例二 函数内求两个和
// 求2个数的和
function getSum() {
let num1 = 10
let num2 = 20
let sum = num1 + num2
document.write(`${sum}`)
}
getSum()
案例三 封装 1-100之间的和
//求1-100的累计和 封装函数
function getSum100() {
let sum = 0
for (let i = 0 ; i <=100 ; i++){
sum += i
}
document.write(`${sum}`)
}
getSum100()
案例四 带有参数的函数
// 带有参数的函数
function getSum(num1,num2) {
document.write(num1 + num2)
}
getSum(1,2)
getSum(22,33)
案例五 求 2-10之间的和
// 求 2-10累计的和
// num1,num2 叫形参
function getSum10(num1,num2){
let sum = 0
for(let i = num1 ; i <= num2 ; i++) {
sum += i
}
document.write(`2-10直接累计的和${sum}`)
}
// 2,10叫实参
getSum10(2,10)
案例六 函数的返回值
function fn() {
return 20
}
// fn()
//return 相当于 执行了一句话 fn() = 20
document.write(fn())
案例七 求数组中最大的值
function getArrMax(arr) {
//声明一个max 变量
//把数组第一个值给max
let max = arr[0]
//开始遍历数组
for(let i = 0 ; i < arr.length;i++){
// 测试一下看有没有遍历出来
// console.log(arr[i])
// 比较最大值 如果数组第一个小于后边的数
if( max < arr[i]) {
// 那就重新给第一个赋比上一个值大的数字
max = arr[i]
}
}
//返回这个最大值
return max
}
let maxplus = getArrMax([1,6,9,55,3])
document.write(`数组的最大值是:${maxplus}`)
案例八 求数组中最小的值
// 案例 ---- 求数组中最小的值
function getArrMin(arr) {
// 把数组第一个值赋给 min变量
let min = arr[0]
//循环遍历
for(let i = 0 ; i< arr.length;i++){
// 测试有没有全部遍历出来
// console.log(arr[i])
if(min > arr[i]) {
min = arr[i]
}
// 测试有没有把小的筛选出来
console.log(min)
//第一个值和后边的值做比较
}
return min
// 返回最小值
}
let minValue = getArrMin([10,50,60,2,8,9])
document.write(`数组中最小的值是${minValue}`)
案例九 函数返回两个值
//函数返回多个值
function fun(x,y) {
let jia = x + y
let jian = x - y
// 返回多个值可以用数组
return [jia , jian]
}
let res = fun(2,3)
// 根据数组下标打印多个值
document.write(`两个值的和是:${res[0]}两个值减是:${res[1]}`)
案例十 数组返回最大值和最小值
function arrfun(arr){
// let num = arr[0]
// let num2 = arr[0]
// 也可以这样写
let num = num2 = arr[0]
for(let i = 0 ; i < arr.length; i++) {
// 测试循环遍历成功没
// console.log(arr[i])
// 拿数组第一个数值和数组后边的数值做比较
if(num < arr[i]) {
num = arr[i] // 如果后边的值比第一个值大的话 重新给她赋值
// 测试一下 看有没有把最大值筛选出来
// console.log(num)
}
if(num2 > arr[i]) {
num2 = arr[i] //如果后边的值比第一个值小的话 重新给她赋值
// 测试一下 看有没有把最大值筛选出来
console.log(num2)
}
}
// 返回最大值和最小值
return [num,num2]
}
let res = arrfun([5,8,9,20,66,2,44,33])
// res[0] 根据return 下标取第一个值
document.write(`数组中最大的值是:${res[0]} 数组中最小的值是:${res[1]}`)
案例十一 用三元运算符 写 数组返回最大最小值
//用三元运算符来去写
function arrfun(arr) {
let max = min = arr[0]
for (let i = 0; i < arr.length; i++) {
// 条件?满足条件执行的代码:不满足条件执行的代码
// max < arr[i] ? max = arr[i] : max
// min > arr[i] ? min = arr[i] :min
max = max < arr[i] ? arr[i] : max
min = min > arr[i] ? arr[i] : min
}
// 返回最大值和最小值
return [max, min]
}
let res = arrfun([5, 8, 9, 20, 66, 2, 44, 33])
// res[0] 根据return 下标取第一个值
document.write(`数组中最大的值是:${res[0]} 数组中最小的值是:${res[1]}`)
案例十二 手动输入两个数字 ;返回最大哪一个
//输出两个数 返回最大的哪一个
let num1 = +prompt('请输入第一个数')
let num2 = +prompt('请输入第二个数')
function fun (x,y) {
// if(num1 > num2) {
// return x
// }else{
// return y
// }
// return x>y ?那就返回x , 如果x<y :那就返回y
return x > y ? x : y
}
document.write(fun(num1,num2))