For investors
股价:
5.36 美元 %For investors
股价:
5.36 美元 %认真做教育 专心促就业
随着互联网的不断发展,越来越多的人都在学习达内JavaScript编程开发等互联网技术知识,而本文我们就通过案例分析来简单了解一下,JavaScript编程内存管理入门。
一门语言的内存存储方式是我们学习他必须要了解的,接下来让我浅谈一下自己对他的认识。
先说,JavaScript中的变量包含两种两种类型:
1)值类型或基本类型:undefined、null、number、boolean、string,这些类型在内存中分别占有固定大小的空间,他们的值保存在栈(Stack)中,一般说他们是按值访问的。
2)引用类型:Object
(1)原生引用类型,由ECMAScript标准定义:ArrayStringNumberDateBoolean等
(2)宿主引用类型,由浏览器提供
(3)自定义引用类型
这些类型值是对象,大小不固定,故不能存放在栈中,但是它们的内存地址是固定的,因此可以将内存地址保存在栈内存中。而包含引用类型值的变量实际上包含的并不是对象本身,而是一个指向该对象的指针。当需要寻找引用类型的变量时,可以先从栈中读取该内存地址,然后再通过该地址找到堆(Heap)中的值。一般说他们是按引用访问的。
a)值类型或基本类型:从一个变量向另一个复制基本类型的值,会创建这个值的一个副本,但两个变量不会相互影响。
x、y互相改变后不影响对方的值。
2)引用类型:从一个变量向另一个变量复制引用类型的值,复制的其实是指针,因此两个变量终都指向同一个对象。
arr2和arr3都是保存的一个数组对象的内存地址,作为指针都指向该数组对象,而不是对象本身。该数组本身发生变化时,因为两个指针的指向没有变化,所以打印的结果是一样的。
如果想检测一个值是何种类型,请看
i)用typeof检测基本类型
ii)用instanceof检测变量是不是某引用类型的实例
综上,对于基本类型的值,因其大小固定,且只占用很小的内存的空间,故放在栈中,查找速度也较快。对于引用类型的值,因其大小不固定,且容易占用大量内存,故放入堆中,但查找速度较慢。
【免责声明】:本内容转载于网络,转载目的在于传递信息。文章内容为作者个人意见,本平台对文中陈述、观点保持中立,不对所包含内容的准确性、可靠性与完整性提供形式地保证。请读者仅作参考。更多内容请加抖音太原达内IT培训学习了解。