技巧一:理解指针或引用的含义

在内存里存储某个变量,这个变量有个内存地址,指向这个变量。指针就是用来存储这个变量的内存地址,通过指针就能找到这个变量。

在JavaScript中,数据类型分为基本类型和引用类型。

基本类型:number,boolean,null,undefined,string
引用类型:对象,数组,函数

其中,当将引用类型赋值到一个变量中时,其实这个变量存储的只是这个引用类型数据的内存地址,而不是数据本身。

  1. var a = {};
  2. var b = a;
  3. a.name = "hello"
  4. console.log(a.name); // 'hello'
  5. console.log(b.name); // 'hello'
  6. b.age = 20;
  7. console.log(b.age);// 20
  8. console.log(a.age);// 20

上面代码说明,a和b两个变量指向同一个对象,任何操作都会相互影响。

技巧二:警惕指针丢失和内存泄漏

内存泄漏是指不再用到的内存没有得到及时释放,占用内存,影响系统性能。

JavaScript采用了“引用计数”的垃圾回收机制来回收不再使用的内存。语言引擎有一张“引用表”,保存了内存里所有的资源,如果一个值的引用次数是0,就表示这个值不再用到了,因此可以将这块内存回收。

但如果一个值不再需要了,引用数却不为0,垃圾回收机制无法释放这块内存,从而导致内存泄漏。

手动解除引用的方式是将变量的值重置为null。

技巧三:利用哨兵简化实现难度

技巧四:重点留意边界条件处理

技巧五:举例画图,辅助思考

技巧六:多写多练,没有捷径