值类型与引用类型

JavaScript 2020-03-07 819

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

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

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

赋值方式

1.值的拷贝,创建一个新对象

2.保存与复制的是值本身

3.两份数据在内存中是完全独立的

1.引用的拷贝,创建一个新引用

2.保存与复制的是指向对象的一个指针

3.变量中的存储的地址赋值一份单独存储,

两个变量中修改其中一个对象,另外一个引用来访问的时候,也会访问到修改后的值。

4.使用 new() 方法构造出的对象是引用型

值是否可变 不可变 可变
作用域 函数作用域,在函数内部修改时生效,函数销毁时失效 函数中被修改时修改的是运行时数据区中的值,即使函数被销毁,变量的值依旧被改变。
比较方式

值 的比较

引用的比较
   

== → 只比较值   

=== → 不仅比较值,还比较数据类型

 

 
  检测类型   typeof 运算符   instanceof 运算符
# 使用object(字典)  
def func(o):  
    o['message'] = 'new Value'

o = {"message": 'old value'}  
func(o)  
print(o)  

# 结果:{'message': 'new Value'},,结果变化了  
# 使用Array(数组)  
def func(o):  
    o[2] = 'new value'  
    # o['message'] = 'new Value'  

# o = {"message": 'old value'}  
o = ['a', 'b', 'c']  
func(o)  
print(o)  
# 结果:['a', 'b', 'new value'],同样变化了  
# 使用普通的值类型  
def func(o):  
    o = 'new value'  
    print(o)  

o = 'old value'  
func(o)  
print(o)  
# 结果:new value  
old value  

从上方代码可以看出值类型与引用类型的区别

参考:https://www.cnblogs.com/lingXie/p/11493620.html

标签:JavaScript

文章评论

评论列表

已有0条评论