Open
Description
本文旨在记录一些js变量、作用域与内存相关的一些核心概念
Every thing is javascript
- 变量:
- code:
// 不能给基本数据类型添加属性,**尽管不会报错**
var name = "name";
name.age = 1; // 不会报错
console.log(name.age); // undefined
- 概念: 引用类型数据存放在堆内存中,基本类型数据存放在栈内存中
- 延长作用域链:作用域链的前端添加一个变量对象,此时代码性能会下降
// with语句:with语句块内部被封装了一个局部作用域,其变量对象中包含着指定对象的所有属性和方法所作的变量申明
// try-catch语句:其变量对象中包含的是被抛出的错误对象的申明
// 当with和catch语句结束之后,作用域链会恢复到原先的状态
- 垃圾回收:参考内存管理
1.垃圾回收有两种方式:标记清除,引用计数
2.标记清除:目前主流的做法
3.引用计数:由于在循环引用中会出现永远无法释放对象问题,所以目前不在使用