以下是否会导致内存复制操作?
1: var foo, bar;
2: foo = 'abc';
3: bar = foo;
foo
的内存表示是否被复制到第3行bar
所指向的内存中?
如果foo
的字符串大小为1 MB(本示例中为6个字节),是否会发生这种情况?
最后,这种行为是由ECMAScript规范定义还是留给实现者?
答案 0 :(得分:2)
JavaScript中的字符串是不可变的,可以被视为"引用类型" (a-la Java和C#):Are JavaScript strings immutable? Do I need a "string builder" in JavaScript?
我快速浏览了一下ECMAScript 7规范,但是我找不到一个简洁的权威参考资料,只是说"字符串是不可变的" - 您必须从规范的其余部分推断出:https://www.ecma-international.org/ecma-262/7.0/index.html
关于个别问题:
foo
指向一个1MB大小的字符串,那么就像以前一样,将传递一个引用。