js基础-值类型和引用类型

在 ECMAScript 中,变量可以存在两种类型的值,即原始值和引用值。

  原始值 引用值
概念 原始值指的是 原始类型 的值,也叫 基本类型 引用值指的是 引用类型(类) 的值
数据类型 Number、Stirng、Boolean、Null、Underfined Object、Function、Array、Date、RegExp 
存储 栈(stack),占内存空间固定,使用后被销毁

堆(heap),占内存空间不固定,使用后不一定被销毁,只有一个对象没有任何引用时,

系统的垃圾回收机制才会回收销毁

赋值方式
1.值的拷贝,创建一个新对象
2.保存与复制的是值本身
3.两份数据在内存中是完全独立的
1.引用的拷贝,创建一个新引用
2.保存与复制的是指向对象的一个指针
3.变量中的存储的地址赋值一份单独存储,
两个变量中修改其中一个对象,另外一个引用来访问的时候,也会访问到修改后的值。
4.使用 new() 方法构造出的对象是引用型
值是否可变 不可变 可变
作用域 函数作用域,在函数内部修改时生效,函数销毁时失效 函数中被修改时修改的是运行时数据区中的值,即使函数被销毁,变量的值依旧被改变。
比较方式

值 的比较

引用的比较
   
== → 只比较值   
=== → 不仅比较值,还比较数据类型
 
 
  检测类型   typeof 运算符   instanceof 运算符

存储详解
原始值:

  var a =100;
  var b = a;
  a = 200;
  console.log(b);//100   

复制前的变量对象

 

复制后的变量对象

 

 

 

引用值:

  var a = {age:20};
  var b = a;
  b.age = 21;
  console.log(a.age);//21   

 

  

 

posted @ 2019-09-09 19:10  邪儿莫  阅读(1158)  评论(0编辑  收藏  举报