值类型
1 .基本类型,number,string,Boolean,undefined,null,,symbol
2 .通过值复制的方式赋值和传递值

3 .存储在栈中
4 .遇到的问题
引用类型
1 .除了上面类型外的对象类型,array,object
2 .通过应用复制的方式赋值和传递值

3 .存储在堆中
4 .遇到的问题 react中改变了引用类型的值,但是界面没有刷新
栈内存和堆内存的区别
1 .为了使程序运行时占用的内存最小。当一个方法执行时,每个方法都会建立自己的内存栈,在这个方法内定义的变量将会被逐个放入这块栈内存里,当方法执行结束,这个方法的内存栈也会被销毁。因此,所有在方法中定义的变量都存放在栈内存中。
2 .但当在程序创建一个对象时,这个对象将被保存到运行时数据区中,以便反复利用(因为对象的创建成本通常较大),这个运行时数据区就是堆内存。堆内存中的对象不会随方法的结束而销毁,即使方法调用结束后,只要这个对象还可能被另一个变量所引用,则这个对象就不会被销毁;只有当一个对象没有被任何变量引用它时,系统的垃圾回收机制才会回收它
3 .对于值类型来说,栈内存中的数据就是所持有的值
4 .而对于引用类型来说,栈内存中的数据只是所持有的值在堆内存中的内存地址,我们改变该值的内部属性并不会影响它在堆内存中的内存地址。但如果重新赋值一个新的引用类型的值是不合法的,因为这会修改变量所绑定内存地址
网友评论