目录:
- 变量作用域
- 递归函数
- 对象
- 数组
变量作用域:
- 概念:作用域是变量在js中可以生效的范围
- 分类:全局作用域、局部作用域
- 全局作用域:
- 1、是最大作用域
- 2、作用范围为整个js代码区域
- 局部作用域:
- 1、是在函数区域内生成的一个局部作用域,声明的变量只能在这个区域使用
- 变量的使用规则:访问规则、赋规则
- 访问规则:获取变量值的规则
- 1、现在自己所在的局部作用域中寻找指定的变量
- 2、没有则想上寻找,访问上级作用域直至全局作用域
- 3、如果全局作用域中也无法找到指定的变量则报错
- 赋值规则:
- 1、现在自己所在的局部作用域中寻找指定的变量有就直接赋值
- 2、没有想上查找,直到找到或者到全局作用域为止
- 3、全局也无的话,就直接在全局声明变量,然后在局部区域赋值
- 作用域链:
- 1.概念:
- 变量访问或赋值时,
先在自己的作用域查找,
如果没找到,再一层一层向上查找,至到最外层全局作用域。
这种层层查找关系,叫作用域链
递归函数:
- 实质在声明的函数中嵌套调用自己,当后面的结果由前面推导出来时可用递归简化代码。
- 三要素:
- 1、要有递归结束条件
- 2、要能改变递归的条件
- 3、前后值的关系推导
- 实现递归步骤:
1. 函数自身调用自身
function fn(){
fn()
}
2. 结束递归条件
function fn(n){
if(n == 1){
return 1
}
}
3. 前后关系,后面结果与前面值关系
例如:
1 + 2 + 3 + 4 + 5 = ?
f(5) = f(4)+5↑
=> f(3)+4↑
=> f(2)+3 ↑
=> f(1)+2 ↑
1 ↑
f(n) = f(n-1) + n
对象:
- 实质一组相关事物的集合
- 语法:
- 1.字面量方式:var 对象名={属性:属性值,属性2:属性值2}
- 2、构造函数方式:var 对象名=new object()|赋值:对象名.属性名=属性值
- 访问属性值:对象名.属性
- 修改属性值:对象名.属性=新的属性值
- 删除属性:delete 对象名.属性
- 添加属性:对象名.新的属性=属性值
- 遍历对象:for in
- 步骤:
- for(var key(变量名) in 对象名){
- console.log("对象遍历的属性名:"+key,“所有的值”+对象名[key])
- }
- 注意:当访问属性值时,属性名是变量的情况:对象名[变量名]
数组:
- 存储一系列有序数据的集合
- 定义:字面量定义、构造函数定义
- 字面量定义:var 数组名=[值1,值2]
- 构造函数定义;var 数组名=new Aarry(值1,值2)
- 访问数组元素:arr[index]下标
- 数组长度:数组名.length
- 遍历数组:for(var i=0;i<数组名.length;i++){
- 代码
- }