码迷,mamicode.com
首页 > 其他好文 > 详细

ES之值类型以及堆和栈

时间:2017-11-15 22:07:46      阅读:116      评论:0      收藏:0      [点我收藏+]

标签:cti   默认   栈内存   变量声明   str   取出   tac   堆内存   二次   

ES的数据类型:
原始类型(值存在栈内存中): Number、String Boolean、undefined、null
charAt(index)返回该index所在的字节,charCodeAt(index)返回该index所在字节的Unicode值。
undefined和null不能和数字进行比较。


引用类型(值存在堆内存中): Object、Function、Array、Date、Math、RegExp ...
______________________________________________________________________________________
堆(heap)和栈(stack)


栈内存:
将栈当做一栋房子,房子里面有很多房间,此时的房间名为系统定义的二进制数字,
当声明一个变量(变量声明永远在栈中,与赋的值无关)时栈为它分配一个房间,房间名为变量名,
当未赋值时,房间里面系统默认放undefined,当变量赋原始类型值时,房间内放该原始值,
当变量赋引用类型时,房间内放置该引用值在堆中的地址。
栈的特性:先进去的东西后出来,后进去的东西先出来。

 

 

堆内存:
堆内存也可以看做一个房子,堆内存的房间放的是引用类型的值的集合,而指向该房间的地址存放在栈内存的房间里。

原始值具有不可改变的特性:
比如将一个原始值放在一个房间里时,该值就不能再取出来了,
除非栈内存满了,它的值就会被新的值覆盖,这种方式称为形成二次覆盖。
若栈内存没满,当一个变量再次赋值时,该变量就会脱离原来的房间,去占据下一个房间,并把新赋的值放进去。
旧值的房间名就再次变成了栈内存的一串标准数字。

栈内存中赋值属于拷贝: 拷贝的是一个原始值或引用地址。

ES之值类型以及堆和栈

标签:cti   默认   栈内存   变量声明   str   取出   tac   堆内存   二次   

原文地址:http://www.cnblogs.com/ypLive/p/7840431.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!