JavaScript里的数据类型分为7种,分别为:number、string、boolean、null、undefined、symbol、object。
其中简单类型有:number、string、boolean、null、undefined、symbol;复杂类型有:object。
内存:
当我们打开浏览器时,会占用一些内存,浏览器会把内存分布给网页,然后会分配给html、css、js、网络还有插件等等。
JS引擎得到的内存又会分布给代码区和数据区。在数据区里又分Stack栈内存、Heap堆内存。简单类型的数据会被存在Stcak栈内存里,复杂类型的数据是把 Heap 地址存在 Stack 里。
关于内存的相关题目:
①请问a等于多少?
答:a = 1
②请问a.name等于多少?
答:a.name = 'a'
③请问a.name等于多少?
答:a.name = 'b'
④请问a等于多少?
答:a= { name: 'a' }
GC垃圾回收机制
这个页面用完了的内存,还给浏览器,浏览器再给别的页面。
如果一个对象没有被引用,它就是垃圾,将被回收。
例:
请问fn是不是垃圾?
答:不是。
假如把页面关了,那fn是不是垃圾呢?
答:是,因为把页面关了,document就不存在了,也就是说这个内存中没有document对象。
但是在IE里有bug,它认为上图中10、20、30这三个东西不是垃圾,会把这些一直留着,只要不把整个网页关掉,就会一直存在着。
如何解决呢?
我们需要把所有的事件监听置为null。
内存泄漏:由于浏览器的一些bug,使得该被标记为垃圾的东西,没有被标记为垃圾,然后内存就会被永久的占用着,除非你把整个浏览器给关了。