作用域:
变量在函数内部作用的区域,有函数的地方就有作用域
作用域分类:
①全局作用域,函数的外部就是全局作用域
②局部作用域,函数内部就是局部作用域
规则:
内层可以访问外层作用域变量
外层不能访问内层作用域变量
作用域赋值:
var num = 100
// var num3
function fun1() {
var num1 = 200
function fun2() {
var num2 = 300 //赋值前在当前作用域查找
num1 = 400 // 上级作用域查找,找到赋值
num = 500 //上级作用域查找,至到全局作用域
num3 = 600 // 当前作用域查找,上级作用域查找,全局作用域查找,全局作用域也没查找到,将创建全局变量,然后赋值
console.log('num3 ',num3);
}
fun2()
}
fun1()
递归函数:
函数自身调用自身 这样的函数称为递归函数
=> 注意: 1. 递归结束的条件
2. 改变递归条件的代码
3.递归必须要有出口,不然出现死递归
递归能解决问题:后面的结果由前面推导出来,可以采用递归简化实现
对象:
一、理解对象,对象是一个具体事物,对象有自己的特征行为
对象: Object
属性 :方法
属性名 :属性值构成
二、创建对象
var jackObj = { } //创建空对象
var jackObj = {
name:'jack',//姓名属性 => name属性名和jack属性值构成
age:18,// 年龄属性 => age属性名和18属性值构成
sex:'男' // 性别属性
}
三、数据类型
基本数据类型
var num = 100 // number
var name = 'jack' //string
......
复杂数据类型
var obj = {name:'jakc',age:18}
obj 数据类型名 -> Object
四、创建对象-new语句
字面量方式:
var obj = { name:'jack', age:18 }
构造函数方式:
var obj = new Object() //空对象
obj.name = 'jack',
obj.age = 18
五、 遍历对象 for-in
for(var 一般用k或者key in 声明对象名称)
修改属性值: obj.name = 'rose'
删除属性值:delete obj.name
添加属性值:obj.没有的属性值
数组:
概念:数组可以一次性存储多个数据,或者理解是一个数据的集合
语法:① 字面量:var arr = [ ] 常用
② 构造函数: var arr = new Arryay()
数组下标:
=> 下标(index--索引)
=> 数组里面保存了很多的数据,不便于区分,为了解决这种问题数组在创建的时候会默认给每一个数组元素(成员)添加一个编号
=> 把这个编号称之为下标或者是索引,下标默认都是从0开始的
=> 可以使用下标对数组做各种操作,获取数组元素、修改数组元素、删除数组元素、增加数组元素
+ 数组属性
=> length 表示数组的长度(个数)
遍历数组: for