# 一、复习
1、函数:实现了某个功能的代码段
2、函数的特点:忽略细节,重复使用,选择使用
3、函数的创建
- 声明式:function 函数名(){}
- 赋值式:var 变量名 = function(){}
4、函数的执行
- 直接执行 变量()
- 事件执行:事件源,on事件类型 = 函数
5、函数的分类
- 有名函数
- 无名函数:非正常函数,不能直接使用,只能作为值存在
- 赋值式创建函数的值
- 作为参数
- 作为返回值
- 作为事件处理函数
- 作为匿名函数的函数体
- 匿名函数
6、函数的入口 - 参数
- 实参
- 形参
- 数量:多个
- 数量一致时:从左到右,一一对用
- 形参多:多出来的为undefined
- 实参多:可以找arguments获取
8、arguments
- 函数的内部内置数组对象,专门用来接收当前函数所有参数
- 实参个数:arguments.length
- 序号、索引:arguments[索引号]
7、函数的出口 - 返回值
- 将函数内部的执行结果或处理的数据,返回到函数的执行语句上,方便进行二次使用或另作他用
- 语法 return 数据 一个函数只有一个返回值
- 一般情况下,只有处理数据的函数,才需要返回值
- 没有return的函数,默认返回undefined
9、事件类型
- click、dblclick
# 三、作用域
1、作用域:变量、函数、数据、功能,作用的区域
2、分类
- 全局:不属于任何函数的语句
- 局部:某个函数内部的区域
3、作用域之间的访问规则
- 父作用域不能使用子作用域内部的数据
- 子作用域能使用父作用域内部的数据
4、变量的读写规则
- 读(使用)
- 先在自身作用域查找,找到了就使用,找不到依次向上层作用域查找,任意层找到了,都使用并停止查找,直到顶层都没有找到,报错
- 写(赋值)
- 先在自身作用域查找,找到了就修改停止查找,找不到依次向上层作用域查找,任意层找到了,都修改并停止查找,直到顶层都没有找到,直接成名成全局,再做修改
5-不同作用域内变量的特点
- 全局变量:跟随全局环境,在内存中一直存在,占内存
- 局部变量:跟随局部环境,局部作用域的概念,变量存在,局部作用域结束,变量被删除
- 总结:尽量少用全局变量,可以使用匿名函数,生成一个新的作用域,将要使用的数据和多个功能再次包裹
- ;(function(){})();
# 四、声明提升
1、声明变量的提升
- var声明的变量,都会提升到作用域最开始的位置声明,原位置赋值
2、声明函数的提升
- function声明的函数,会整体提上到作用域的最开始位置
3、当var遇到function
- 赋值式创建的函数 var fn = function(){}
- 提升的变量,并没有提升函数
- 当var 的变量名和function的函数名重名时,var先提升,function后提升覆盖var
# 五、函数的应用
1、递归:在函数的内部执行自身,滥用会造成类型死循环的现象:程序崩溃,死机,内存溢出
- 利用递归的思想解决程序中的思想,要配合函数的结束语句,适当时跳出递归
- 正常递归也会消耗大量性能,能不用就不用
function fn(){
fn();
}
fn();
2、递
- 不断执行自身
3、归
- 不断向外返回数据的过程
4、找座位
# 六、对象
1、对象:一种对客观事物的描述,将客观事物以逻辑数据的形式进行描述的过程
- 无序数据的打包:object对象,标志是{}
- 有序数据的打包:array对象,标志是[]
2、对象的本质(组成)
- 键值对数据组成
- 键和值一一对应,成对出现
- 键和值之间使用冒号链接,键值之间使用逗哈隔开
- {color:red,height:20,}
3、对象的意义(作用)
- 存储数据
- 编程
4、创建对象
- 字面量:var obj = {name:'张三'}
- 构造函数:(创建一个对象) var obj = new Object()
5、任何情况下,两个对象都不相等,如果相等就是一个对象
6、对象的操作
- 点语法:当对象的属性是具体的值时
- 中括号语法:当对象的属性是变量时
7、对象的操作
- 增
- obj.sex = '男'
- obj['sex'] = '男'
- 删
- delete obj.sex = '男'
- delete obj['sex'] = '男'
- 改
- obj.sex = '女'
- obj['sex'] = '女'
- 查
- console.log(obj.sex)
- console.log(obj['sex'])
8、对象的分类
- 宿主对象:window,docunment
- 本地对象:特殊对象,构造函数,需要new执行后才能得到具体的对象
- Object,Number,String,Boolean
- 内置对象: