变量作用域:
- 什么是作用域,就是一个变量可以生效的范围 - 变量不是在所有地方都可以使用的,而这个变量的使用范围就是作用域
全局作用域
- 全局作用域是最大的作用域 - 在全局作用域中定义的变量可以在任何地方使用 - 页面打开的时候,浏览器会自动给我们生成一个全局作用域 window - 这个作用域会一直存在,直到页面关闭就销毁了
局部作用域
- 局部作用域就是在全局作用域下面又开辟出来的一个相对小一些的作用域 - 在局部作用域中定义的变量只能在这个局部作用域内部使用 - 在 JS 中只有函数能生成一个局部作用域,别的都不行 - 每一个函数,都是一个局部作用域
- 有了作用域以后,变量就有了使用范围,也就有了使用规则 - 变量使用规则分为两种,访问规则 和 赋值规则
变量使用规则(重点):
访问规则 即获取变量值规则
赋值规则
作用域链
变量访问或赋值时,
先在自己的作用域查找,
如果没找到,再一层一层向上查找,至到最外层全局作用域。
这种层层查找关系,叫作用域链
递归函数
函数定义好之后,不能自已执行,需要使用函数调用语句调用才会执行, 函数调用语句一般写在函数体外面,但如果将函数调用语句写在函数体中, 也就是在一个函数内部,调用自己,这种函数称为递归函数:
上面递归函数 一旦执行,会循环往复,没有止尽。 需要给递归函数设置递归结束条件。 不然就是一个没有尽头的递归函数,我们叫做 死递归
简单了解对象:
对象引入
对象: 数据类型 - 复杂数据类型Object
简单对象创建方式 两种
访问对象属性
对象.属性名
var obj = {name:'jack'}
obj.name
通过[]访问
obj['name']
var _name = 'name'
obj[_name] //属性名为变量
对象基本操作
添加属性
修改属性
查询访问属性值
delete obj.age;
对象遍历for-in循环
for(key in obj){
// key 属性
// obj[key] 属性值
}
数组基础:
什么是数组
数组是一系列有序数据的集合
也就是我们把一些数据放在一个盒子里面,按照顺序排好, 这个东西就是一个数组,存储着一些数据的集合
[1, 2, 3, 'hello', true, false]
数组数据类型Array
我们简单的把所有数据类型分为两个大类 基本数据类型 和 复杂数据类型
- 基本数据类型: number / string / boolean / undefined / null
- 复杂数据类型: Object / Function / Array / ...
创建一个数组
- 数组就是一个 [] - 在 [] 里面存储着各种各样的数据,按照顺序依次排好
字面量创建一个数组
内置构造函数创建数组
数组的 length
- length: 长度的意思
- length 就是表示数组的长度,数组里面有多少个成员,length 就是多少
数组的索引
- 索引,也叫做下标,是指一个数据在数组里面排在第几个的位置
- 注意: 在所有的语言里面,索引都是从 0 开始的
- 在 js 里面也一样,数组的索引从 0 开始
数组遍历
- 因为数组的索引就可以获取数组中的内容
- 数组的索引又是按照 0 ~ n 顺序排列
- 我们就可以使用 for 循环来循环数组,因为 for 循环我们也可以设置成 0 ~ n 顺序增加
- 我们把这个行为叫做 遍历