06JavaScript基础
核心知识点
函数 2. 函数中的参数 2. 函数中的返回值
今日学习目标
能够完成函数相关案例 2. 能够理解函数中的参数 2. 能够理解函数中的返回值
函数
为什么要学函数?
1. 求 1 到100 之间的数字之和
什么是函数?
函数的概念
函数: 可以封装一段特定功能代码,然后通过函数名调用,实现对该段代码重复使用
函数的作用
实现代码的重复使用。
✔ 对分散代码整合(封装)
✔ 重复使用
创建函数
方式一: 函数声明及执行方式(推荐) ☞ 函数的声明:function 自定义函数名 ( ) { 具体的功能代码}
注意:1. 由于函数是用来实现某种特定功能代码,所以一般我们设置函数名的时候,以动词开始。2. 函数不能自己执行代码,需要通过函数名调用实现代码的执行☞ 调用函数(执行函数)函数名 ( ) ;
方式二:函数表达式(字面量)及执行方式(了解) var fn = function ( ) { } fn ( ) ;
课堂一练 1. 将比较数字大小封装到一个函数中
2. 写一个函数,求1 - 100 之间所有数的和
3. 通过函数方式实现:判断一个数字是基数还是偶数
4. 通过函数的方式实现: 在页面中打印一个10 行直角三角形
5. 格式化日期的封装 yyyy- mm- dd hh: mm: ss
函数的参数
思考: 利用函数如何计算任意两个数字之和?
形参 在 函数创建时,在小扩号中定义的变量语法:
function 函数名 ( 形参, 形参, 形参... ) {
} 注意:1 函数也可以做为参数进行传递
实参 实参,在函数调用时,在小扩号中所传入的实际的数据。语法:
函数名 ( 数据, 数据, 数据... ) ;
课堂一练 ☞ 求 n - m 之间的数字之和 ☞ 求圆的面积 (3.14 * r* r)☞ 求3 个数中的最大值 ☞ 判断一个数是奇数还是偶数 ☞ 求5 个数的总和
函数的返回值
思考: 如何在函数外面获取到上面代码计算出的任意两个数之和?
返回值:函数执行完后,可以把执行的结果 通过 return 语法 返回给 调用者 function add ( num1,num2) {
return num1 + num2;
}
var resNum = add ( 21 , 6 ) ;
alert ( resNum) ; 注意:1. 如果函数没有显示的使用 return 语句 ,那么函数有默认的返回值:undefined2. 如果函数中写了return 语句,后面没有写任何其他内容,那么函数的返回值依然是 undefined3. 一个函数只能有一个返回值4. return 代码执行完成后,后面的代码不再执行5. 函数也可以作为返回值(理解)
课堂一练 1. 获取数组中最大值,并返回2. 将一个数组中所有偶数添加到一个新数组中返回,并计算新数组总和。3 写一个函数,判断是否是闰年【能被4 整除且不能被100 整除,或者能被400 整除】
课后练习
1. 写一个函数,实现对数字数组的排序。
2. 写一个函数,用户输入任意两个数字, 获取最大值并返回 统计班级学生就业薪资,计算总薪资 和 平均薪资。统计班级学生就业薪资,计算薪资超过15000 的人的个数。给一个不重复的数字数组,求最大值和最大值的在数组中的位置给一个字符串数组,将数组中的每一个数据拼接在一起,每个数据之间用 | 符合拼接。 如: ‘张三| 李四| 王五’给一个数字数组,该数组中有很多数字0 ,将不为0 的数据存入到一个新的数组中
函数其他部分
arguments的使用
☞ 思考: 1. 如果一个函数的参数个数不确定该如何获取?2. 演示console. log ( ) 中不同个数参数的效果3. 介绍arguments对象☞ 通过 arguments获取到函数参数的个数 【不确定函数到底有多少个参数】☞ 总结:1. 如果函数参数不确定,可以定义函数的时候不写参数,通过arguments获取2. 如果函数的参数确定,那么推荐定义函数的时候写参数课堂案例: 1. 求任意个数中的最大值2. 求任意个数的和
匿名函数和自调用函数
☞ 匿名函数: 没有函数名的函数
例如:
var fn = function ( ) { }
☞总结:1. 匿名函数不能单独使用2. 可以将匿名函数赋值给一个变量3. 可以让匿名函数自己调用自己(自调用函数【匿名函数】)☞ 自调用函数: 函数封装好,立即执行。总结:1. ( function ( ) { } ) ( ) ;
☞ 函数属于一种数据类型
☞ 函数作为参数
☞ 函数可以为返回值
函数作用域及局部变量
作用域 ☞ 思考: 在函数内部定义的变量,在函数外部能否访问该变量作用域: 变量或者函数可以起作用的区域◆ 全局作用域(全局变量)1 ,在script标签中或者js文件中定义的变量,在任何地方都可以访问2 , 在函数内部声明变量不使用var 关键字 (不建议使用)◆ 局部作用域(局部变量)1 , 在函数内部定义的变量2 , 局部变量只能在定义变量的函数中使用◆ 块级作用域 (目前所学版本没有,新版本语义中有块级作用域){ 块级作用域} 1. 本质上块级作用域中的变量在外部不能访问2. 但是在js中可以访问块级作用域的变量(证明js没有块级作用域)
全局作用域(全局变量) 声明在所有函数外部的变量,可以所有地方使用
局部作用域(局部变量) 声明在某个函数内部的变量或函数的形参,只能在函数内部使用
作用域链
作用域链:当访问一个变量时,会先从本作用域中去找这个变量,若找不到则向上一级作用域中去找,依次类推,就形成了一个作用域链。
作用域链面试题
☞ 分析代码执行结果var a = 1;function fn1(){var a = 2;function fn2(){console.log(a); //a的值 }fn2()}fn1();☞ 分析代码执行结果function f1 () {var num = 123;function f2 () {console.log( num );}f2 ();} var num = 456;f1();
代码预解析
☞ 代码在执行前会进行预解析。1. 变量声明提升,把变量提升到当前作用域的最上面,不包括赋值2. 函数声明提升,把函数提升到当前作用域的最上名,不包括函数的调用