Skip to content

一、数据类型

js
var a =null
console.log(typeof a)//object

typeof判断null类型输出为object.
=== 只能判断 undefinednull
typeof可以判断 undefined,number,string,boolean,function 不能判断 nullobjectundefinednull的区别: undefined代表未定义 null赋值了,值没赋到。

二、数据,变量,内存

  • 栈:全局变量,局部变量
  • 堆:对象
  1. var a = {name: 'tom'} a存在栈里面,关联存储的地址比如:0x100。内容在堆,通过一个物理地址0x100进行关联a和值。
  2. var a = 1 var b = a; 改变b的值,a的值不改变,在栈内存先存储一个a=1,之后又在栈内存存储了一个b=1;
  3. var a={name: 'tom'} var b=a; 通过b.name='tony',改变值,打印a,a的值也发生也改变。因为a b,在栈内存存储了一个物理地址,指向了同一个堆内存.

三、js引擎管理内存

内存生命周期:分配内存,使用内存,释放内存。

  • 局部变量:函数执行完,释放内存。
  • 对象:成为垃圾对象=》垃圾回收机制=》标记清除
  • 全局变量:常驻内存,直到关闭网页。
    1. var a = 3 占用一个内存空间
    2. var obj={} 占用两个内存空间, obj占用一个, {}内容占用一个。
    3. 函数内的变量,运行时声明,函数运行结束释放内存。
    4. 函数内声明对象, var b ={} b自动释放,b所指向的对象{} 在某个时刻由垃圾回收器回收

Released under the MIT License.