gpt4 book ai didi

javascript - 不变是什么意思?

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

如果一个字符串是不可变的,这是否意味着......(我们假设使用 JavaScript)

var str = 'foo';

alert(str.substr(1)); // oo

alert(str); // foo

这是否意味着,当对字符串调用方法时,它将返回修改后的字符串,但不会更改初始字符串?

如果字符串是可变的,这是否意味着第二个 alert() 也会返回 oo

最佳答案

这意味着一旦实例化该对象,就无法更改其属性。在您的第一个警报中,您没有更改 foo.您正在创建一个新字符串。这就是为什么在第二个警报中它将显示“foo”而不是 oo。

Does it mean, when calling methods on a string, it will return the modified string, but it won't change the initial string?

是的。字符串一旦创建就无法更改。现在,这并不意味着您不能将新的字符串对象分配给 str 变量。您只是无法更改 str 引用的当前对象。

If the string was mutable, does that mean the 2nd alert() would return oo as well?

从技术上讲,不能,因为 substring 方法返回一个新字符串。使对象可变,不会改变方法。使其可变意味着从技术上讲,您可以使子字符串更改原始字符串而不是创建新字符串。

关于javascript - 不变是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29774758/

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