1. 递归
在函数的内部去调用自身,默认是一个死循环.
使用方式: 要有跳出条件 结合 return 使用
练习: 使用递归计算 1 - 任意数组之间所有整数的和
2. 匿名函数
没有名称的函数
function () {}
(1) 创建函数
function fn() { } //函数声明
var fn = function() { } //函数表达式
//变量名就是函数的名称
· 对比函数声明域函数表达式的区别?
- 函数声明创建函数存在提升,可以在任意位置创建
- 函数表达式使用变量创建的,只存在变量提升,不存在函数提升,只能先创建再调用
练习:使用函数表达式创建函数,计算任意两个数之间所有整数的和
(2) 匿名函数的自调用
目的:创建函数作用域包裹起来,防止污染全局。
(function(形参列表) {
//函数体中的变量和函数不能被外部访问
})(实参列表);
(3) 回调函数
把匿名函数以实参的形式传递, 意味着形参就是传递的匿名函数的名称
function fn(f) {
//调用fn 时, 匿名函数赋值给f, f就时函数名称
f();//执行传递的匿名函数函数体中的代码
}
fn(function() { ... });
练习:创建函数,传递两个参数,实参使用匿名函数的形式传递,在匿名函数的函数体中添加若干行代码; 在函数中执行匿名函数体中的代码
3. 全局函数
parseInt()/parseFloat()/isNaN()
encodeURI() 对一个 网址中的 汉字进行编码
decodeURI() 对已经编码的网址进行解码
isFinite() 判断 一个值是否为 有限制, 是-> true, 不是-> false
eval() 可以执行字符串内的表达式, 如果字符串中含有不合法的表达式就会报错
2/0 -> Infinity(无穷)
0/2 -> 0
4. 对象
属于引用类型数据
对象:是一组属性(property)和方法(method)的集合
一台电脑:属性有颜色、尺寸、内存大小…方法有看视频、上网、敲代码…
一辆汽车:属性颜色、长度、品牌、空间大小…方法代步、拉货、等等…
- 万物皆可对象
(1) JS中的对象
内置对象: JS 提供的
宿主对象: 根据不同的执行环境来划分的
自定义对象: 由开发者自己创建的对象
(2) 如何创建自定义对象
对象字面量
内置构造函数
自定义构造函数
(3) 对象字面量创建对象
- 使用大括号来创建一个空对象
- 属性名和属性值之间使用冒号隔开
- 多组属性之间用逗号隔开
- 属性名中的引号可有可无,但是如果含有特殊字符就必须添加
练习:创建一个员工对象, 包括编号、姓名、工资、生日
练习:创建一个手机对象,包含颜色尺寸、品牌
(4) 访问对象中的属性
对象.属性
对象[“属性名”]
如果访问的属性名不存在返回 undefined
练习:创建图书的对象,包含编号、标题、作者、价格修改图数的价格,打印图书的作者,添加一个图数的出版社
(5) 内置构造函数创建对象
new Object() 创建一个空对象
需要单独为对象添加每一个属性
练习:创建一个笔记本对象, 包含编号、标题、价格、规格
(6) 遍历对象中的属性
访问对象中的所有属性
javascript for(var key in 对象) { //key 代表对象中的每一个属性名 //对象[key] 可以访问到对象中所有的属性值 }
练习:创建对象,包含有若干个成绩,遍历对象属性,计算总成绩
课后任务
-
整理思维导图
-
练习
创建对象,包含若干个年龄,获取平均年龄,把年龄大于 20 岁打印出来 -
预习JS数