gpt4 book ai didi

javascript - 可以在不分配内存的情况下存储值吗?

转载 作者:行者123 更新时间:2023-11-29 18:25:03 27 4
gpt4 key购买 nike

我一直在看这里

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" —— 这将是灾难性的。

当然这并不意味着根本 不会分配任何内存;我们仍然需要分配内存来存储可以找到字符串内容的位置,以及字符串的长度。

关于javascript - 可以在不分配内存的情况下存储值吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14401637/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com