携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第2天,点击查看活动详情 ES6
1、声明变量
(1).Let 不能重复生命
let start = “张三”
let start = “里斯” 这是错误的会报错
(2) 块级作用域
(3) 不存在变量提升
Console.log(song) //undefined
Var song = ‘恋爱达人’
Let song = ‘恋爱达人’ (会直接报错)
(4) 不影响作用域链(神魔是作用域链)
2、闭包:在一个作用域中可以访问另一个作用域的变量
闭包特点:延展了函数的作用域范围
debugger 的时候可以用在里面可以查看 变量的 值(f11 进入函数)
scope 里面的 locul是局部作用域 Globul是全局作用域的意思 Closure就是闭包的意思 例:
3、面向对象的特性:封装性 继承性 多态性(又叫抽象)
在javaScript中创建对象的模板是构造函数
而在其他语言中创建对象的模板是类
// 一个简单的构造函数
function Leilei(name,obj,score){
this.name = name
this.obj = obj
this.score = score
this.ins = function(){
console.log(this.name,this.obj,this.score)
}
}
var lei1 = new Leilei('李敏','语文',100)
var lei2 = new Leilei('zhangsan','shuxue',20)
lei1.ins()
lei2.ins()
let hero = []
console.log( typeof hero ) (结果为Object) typeof可以判断基本数据类型
hero instanceof Arrary (结果为true)instanceof可以判断复杂类型
4、构造函数的执行过程
constructor 构造器/构造函数(对象的一个属性)
console.log( hero.constructor ) //获取对象的具体类型
instanceof 判断某个对象是否是某个构造函数的实例/对象
console.log( hero instanceof Hero )
var arr = []
console.log( arr instanceof Array )
5、作用域链的查找规则 (一层一层去查找的)
VO对象 就是全局对象 Global
创建AO对象 AO就是局部变量 scope (locul)
6、foo的父级作用域是 Go(也就是全局作用域) 跟他的调用位置没有关系
所以最后打印的是Hello Global 7、JS的内存管理
1、javaScript 会在定义变量时为我们分配内存
- JS对于基本数据类型的内存分配会在执行时,直接在栈空间进行分配
JS对于复杂数据类型内存的分配会在堆内存中开辟一块空间,并且将这一块空间的指针返回值变量引用