是否可以在不分配内存的情况下存储值
Can values be stored without allocating memory?
我一直在看这里
https://developer.mozilla.org/en-US/docs/JavaScript/Memory_Management Allocation_via_function_calls
和这些行让我有点困惑:
var s = "azerty";
var s2 = s.substr(0, 3); // s2 is a new string
// Since strings are immutable value, JavaScript may decide
// to not allocate memory, but just store the [0, 3] range.
所以评论说,JavaScript可能决定不分配内存,只是存储范围[0,3],现在不需要分配内存之前存储?如果没有,正如注释所暗示的那样,究竟发生了什么,使得存储的范围存储在空闲空间中,而没有被其他值占用。
注释意味着s2
不必专门为"aze"
这三个字符分配内存。相反,它可以使用s
已经为"azerty"
分配的内存,并且记住它自己的长度只有三个字符。
不可变部分也很重要:如果s
不是不可变的,那么它可以在不告诉任何人的情况下决定将其值从"azerty"
更改为"foobar"
,从而间接地将s2
的值更改为"foo"
——这将是灾难性的。
注释讨论的是为字符串的字符数据分配空间。
当你创建一个新变量时,它自然要为它分配空间,但这并不一定是堆上的新对象,它可以是预分配的变量数组中的一个项。
让两个变量指向相同的字符数据的好处是,即使子字符串的长度很长,获取子字符串也只占用很少的内存,缺点是,只要使用了原始字符串中的任何子字符串,原始字符串就会保留在内存中。
相关文章:
- 如何在未直接触发的情况下停止事件
- 在不使用JQuery的情况下隐藏DOM中的选定元素
- 在不使用jquery的情况下查找页面中的所有锚点并附加函数
- 在不打开聊天屏幕的情况下制作Zopim-ding代理
- 如何在没有表单提交、没有js、没有jquery和没有ajax的情况下将输入的文本框值存储到php变量中
- 如何在没有Ajax的情况下将blob存储在表单中,并在单击提交时将其发送到服务器
- 允许手机用户在不使用应用程序的情况下将文件从我的网站保存到他们的手机存储中
- 是否可以像在Javascript对象中那样将整数值存储在localStorage中,并在不进行类型转换的情况下提取它
- 在不设置服务的情况下安全地存储数据库密码
- 在没有 jQuery 支持的情况下更新 javascript 中的本地存储值
- 将表单输入存储在javascript变量中,然后在不提交表单的情况下将其值传递到php变量中
- 如何隐藏一行表(或列表项)并在不重新加载页面的情况下更新数据存储
- 在switch语句的情况下,将if语句中的值存储在变量中
- 如何在不重新上传的情况下更改Firebase文件在存储中的路径
- 在不创建垃圾的情况下删除和存储数组项
- 在不使用经典html表单的情况下,在web应用程序中存储隐藏值的最佳做法是什么
- 将缓冲区存储在DataView中,然后在Float64Array不工作的情况下提取
- 如何在没有特定密钥的情况下删除本地存储内容
- 在什么情况下,在数组中存储不同的数据类型在Javascript中是有用的?
- 是否可以在不分配内存的情况下存储值