1、es5的变量访问类型分两种
a、按值访问(基本数据类型)
b、按引用访问(引用类型)
2、先明白这两数据类型的区别
a、基本数据类型保存于栈中##
b、引用数据类型保存于堆中
3、这就要引出堆栈的特点了
a、栈:有序排列,大小固定,比堆更快
b、堆:无序排列,大小不固定,比栈更慢
4、我们通过一个例子来看看栈的大小固定带来的情况
var a = 0
var b = a
a = 1
前两行语句
地址 | 值 |
---|---|
1000 | # |
a | 0 |
b | 0 |
1003 | # |
执行第三行后
地址 | 值 |
---|---|
1000 | # |
1001 | 0(待释放) |
b | 0 |
a | 1 |
我们通过一个例子来看看堆的应用带来的情况,这里new出来的object地址为98888
var a = new object();
b = a
b.name = “JOJO”
第一句语句
地址 | 值 |
---|---|
1000 | # |
a | 98888 |
1002 | # |
1003 | # |
执行第二行后
地址 | 值 |
---|---|
1000 | # |
a | 98888 |
b | 98888 |
1003 | # |
总结
1、按值访问与按地址访问就是在栈中保存的值是指针还是实际的数值
2、占的访问速度比上堆要快上不少,对于对象这种大的数据,基于栈的特性。
在栈中对对象进行操作过于耗费时间。
3、采用这种方式总地来说是为程序的性能作考虑。在不为占空间添加过量负担的同时,
将变量中大数据与小数据进行分区。