-
偏原理
-
可以不懂原理,只需要注意现象,可以正常写代码
-
懂原理,帮助你提升代码性能,优化;方便面试
-
-
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
-
-
二、函数的高级应用-递归
-
在函数内部执行自己
-
递归就是函数自己调用自己
-
递归类似于循环
-
递归函数要注意停止/返回,否则会造成死递归
-
递归比较消耗性能,尽量少用
-
详细见
4递归.html
三、对象的介绍
1. 什么是对象
-
其实就是一种事物的描述,在程序中对象是一种数据类型
-
描述水杯:
-
材质:塑料
-
容量:1000ml
-
颜色:白色
-
形状:圆形
-
功能:容器
-
-
把以上信息,组合打包用来表示一件事物,之后,就叫对象
-
-
程序中的对象主要用来:存储信息
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();
-
区别
-
当字面量内只有一个数值型数据时,表示一个数据
-
当构造函数内只有一个数值型数据时,表示长度
-
-
注意区别,按需选择,顺手