技巧一:理解指针或引用的含义
在内存里存储某个变量,这个变量有个内存地址,指向这个变量。指针就是用来存储这个变量的内存地址,通过指针就能找到这个变量。
在JavaScript中,数据类型分为基本类型和引用类型。
基本类型:number,boolean,null,undefined,string
引用类型:对象,数组,函数
其中,当将引用类型赋值到一个变量中时,其实这个变量存储的只是这个引用类型数据的内存地址,而不是数据本身。
var a = {};
var b = a;
a.name = "hello"
console.log(a.name); // 'hello'
console.log(b.name); // 'hello'
b.age = 20;
console.log(b.age);// 20
console.log(a.age);// 20
上面代码说明,a和b两个变量指向同一个对象,任何操作都会相互影响。
技巧二:警惕指针丢失和内存泄漏
内存泄漏是指不再用到的内存没有得到及时释放,占用内存,影响系统性能。
JavaScript采用了“引用计数”的垃圾回收机制来回收不再使用的内存。语言引擎有一张“引用表”,保存了内存里所有的资源,如果一个值的引用次数是0,就表示这个值不再用到了,因此可以将这块内存回收。
但如果一个值不再需要了,引用数却不为0,垃圾回收机制无法释放这块内存,从而导致内存泄漏。
手动解除引用的方式是将变量的值重置为null。