一、JS的编译和执行
- js是一门解释性语言
- 预先编译,再执行
- 先通读全文,在解释含义
- 找到var和function,做出对应提升
- 编译时
- 提升
- 执行时
- 按照逻辑,结构正常执行
变量和函数的提升
- var的提升
- 提前声明,=号的位置赋值
console.log(a); // undefined var a = 10; console.log(a); // 10
- ↑↑↑↑等价于↓↓↓↓
var a; console.log(a); // undefined a = 10; console.log(a); // 10
- 提前声明,=号的位置赋值
- function的函数提升
- 整体提升
- 即提前声明,有提前赋值
- 如果var遇到function
- 赋值式创建函数
var fn = fucntion(){}
- 提升的是var,不是function
- 变量和函数重名
var a = "hello"; function a(){}
- var提升的更高,所以function占便宜,生效的是function
- 赋值式创建函数
二、函数的高级应用-递归
- 在函数内部执行自己
- 递归就是函数自己调用自己
- 递归类似于循环
- 递归函数要注意停止/返回,否则会造成死递归
- 递归比较消耗性能,尽量少用
- 递归:
- 递:不断向内执行的过程
- 归:不断向上返回的过程
三、对象的介绍
1. 什么是对象
-
在程序中对象是一种数据类型
-
程序中的对象主要用来:存储信息
2. 如何得到对象(创建对象)
- 字面量
var o1 = {}
- 构造函数
var o2 = new Object();
3. 对象的意义和本质
- 意义(功能)
- 存储数据(信息)
- 编程(面向对象编程)
- 本质
- 键值对
4. 对象的操作
-
点语法(.)
- 对象.属性名
var o = {};
- 读
console.log(o.name);
- 写
o.name = "Admin"; o.age = 18; o.sex = "男"; o.sayHello = function(){ console.log("你好,我叫:" + obj.name); }
-
字面量创建对象时,可以很方便的立即写入初始属性
var obj = { name: "Admin", age: 18, sex: "男", sayHello:function(){ console.log("你好,我叫:" + obj.name); } };
-
注意:任何两个对象都不相等
- 如果相等了,意味着就是一个对象
四、数组的介绍
1. 什么是数组?
- 数据的组合,一组数据
- 当需要操作多个数据时,可以给数据打包,数组
- 数组其实也是对象,只是存储数据的形式不一样,但是类型是一样的
2. 如何得到数组(创建数组)
-
字面量
var arr1 = [];
-
构造函数
var arr2 = new Array();
-
区别
- 当字面量内只有一个数值型数据时,表示一个数据
- 当构造函数内只有一个数值型数据时,表示长度
-
注意区别,按需选择,顺手