JavaScript 引用
这个代码中 {视:[视频]}
数组保存的是对 视频
字符串的引用吗?
如果是引用的话
那是不是可以说下面的代码 k
比 k1
内存占用的小
由于上面是基本数据类型,所以是值复制
更新:
那引用数据类型呢
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
这个代码中 {视:[视频]}
数组保存的是对 视频
字符串的引用吗?
如果是引用的话
那是不是可以说下面的代码 k
比 k1
内存占用的小
由于上面是基本数据类型,所以是值复制
那引用数据类型呢
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
接受
或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
发布评论
评论(2)
原则
首先对题主第一个问题:
JS基本类型(undefined,null,number,boolean,string)是直接分配Stack内存的,不存在引用。
比如
对题主第二个问题
这段代码
var 视频 = ['视频']
这句,内存 heap 中开辟地址放 ['视频'], 然后 stack中放入引用地址 视频 指向刚才的 heap 块var k = {视: 视频, a: 视频}
这句,首先heap中开辟地址放新的 object ,下标 视 和 a 都指向第一句 heap 中的地址,然后Stack k 指向这个 objectvar k1 = {a: '视频', b: '视频'}
这句,首先heap中开辟地址放新的 object,里面包含两个基本类型的属性a 和 b, 不存在引用,然后Stack k 指向这个 object所以,第二个问题内存开辟是不一样的。如果硬要说谁多谁少,
k = {视: 视频, a: 视频}
这句话少一点另外有人对js array 内存分配做了源码层级的分析,建议看看:
深入理解 JS 数组 —— JS的Array在内存上分配的空间是连续的吗?
基本类型赋值即拷贝,所以不是引用。