原始类型的不可变性:变量a与b是否指向同一内存地址?
原始类型值的内存地址共享问题
先看示例代码:
let a = 10; let b = a;
此时:
- a -> 10
- b -> 10
基于原始类型的不可变性特性,这两个值是否使用相同的内存地址?
是的,它们会使用相同的内存地址。
JavaScript里的原始类型(数字、字符串、布尔值、null、undefined、Symbol、BigInt)都是不可变的——一旦创建,就无法修改其本身的值。正因为这种不可变性,JavaScript引擎会对相同的原始值进行内存地址复用:当你把a赋值给b时,引擎不会为b重新分配一块内存来存储10,而是让b直接指向a所指向的那个存储10的内存地址。
这种优化不会带来任何问题,因为原始值不可变,无论通过a还是b操作,都只能重新赋值(指向新的内存地址),而不会修改原有内存里的值。
内容的提问来源于stack exchange,提问作者donghoonlee
相关产品推荐
相关产品推荐

