偶遇前端一只小菜鸟,讨论起JS中的数据类型问题,现将我们讨论后,以及自己不完全的理解记录一下,问题的起初他看这篇详细的JS文档是发现的:
JS中的基本数据类型,可直接存取,有五种:字符串 数值 布尔类型 null undefined
基本类型的复制JS中的复杂数据类型,通过引用的方式存取,有三种:对象 数组 函数 正则
复杂类型的复制为什么有上述的结果呢?也就是说,直接存取和引用方式到底是哪里不同呢?
JS中,从变量的存储来看,分为两个地方,栈内存和堆内存。
栈里保存基本数据类型;复杂类型中,堆里保存的才是对象,而栈内存中保存的是一个指针。
JS中,变量的访问方式来看,分为按值访问和按引用访问。
基本类型是按值访问的,操作的就是实际保存的数值。
引用类型(复杂类型)是按引用访问的,操作的是指针,也就是说,需要访问时,先从栈中读取指针--指针可以认为是地址,也就是保存着对象的地址,顺着这个地址,就可以找到堆中的对象了。
似乎是:找到家🏠,还是找到家🏠的地址。
JS中,变量的复制方式来看,分为值复制和引用复制。
基本类型之间的复制就是值复制啦。
引用类型(复杂类型)的复制就是引用复制,也就是说复制指针。
似乎是:给别人一个苹果🍎;或是给别人一份放那唯一的一个苹果🍎所存放的地址。
因自己也是前端小菜鸟,现将参考前辈的资料列一下,因我说不清楚的,可以去前辈的文章那里看。
犯迷糊的小羊🐑 时间对象&引用类型-Assignment
网友评论