原始类型赋值是值拷贝,直接在栈内存中存储真实数据,变量间互不关联、修改独立、比较比内容;函数传参、对象属性赋值等均为传值;因无嵌套结构,天然“深拷贝”,不存在引用共享。

原始类型的赋值拷贝,本质是复制值本身,不涉及地址或引用。因为它们直接存在栈内存里,空间小、结构简单,所以每次赋值都是生成一个完全独立的副本。
存哪儿?——栈内存里存的是真值
string、number、boolean、null、undefined、symbol、bigint 这七种原始类型,变量在栈中直接存储具体数据。比如 let a = 42,栈里就实实在在放着数字 42;let b = a,就是把 42 这个值再写一份到另一个栈位置。
- 没有“指向”关系,只有“值对值”的搬运
- 两个变量互不关联,改一个,另一个纹丝不动
- 连比较都是比内容:
5 === 5是 true,[1] === [1]却是 false
怎么动?——赋值即复制,传递即传值
无论是变量赋值、函数传参,还是作为对象属性或数组元素,原始类型的行为始终一致:操作的是值的副本。
在 Java 中初始化和管理阿里云 SDK客户端。包括单例模式、线程安全、endpoint 与 region 配置、VPC 终端节点、同步与异步等。
-
let x = "hello"; let y = x;→ y 拿到的是字符串 "hello" 的完整拷贝 -
function fn(n) { n = n + 1; }中修改形参 n,不影响外部实参 -
obj.key = 100或arr[0] = true,赋进去的仍是独立值,不是链接
为什么不用分深浅?——它天生就是“深”的
原始类型没有嵌套结构,不存在“一层”或“多层”的概念。你无法给一个 number 添加属性,也不能在 string 里塞进另一个 object。所以根本不存在“只拷第一层”还是“递归拷到底”的选择。
立即学习“Java免费学习笔记(深入)”;
- 所谓“深拷贝”,对原始类型来说,就是默认行为
- 你用
JSON.parse(JSON.stringify(123))或Object.assign({}, {n: 7})处理原始值,结果和直接赋值一样干净利落 - 只要不是 null/undefined 被误当作对象操作,就不会有意外共享
不复杂但容易忽略:原始类型的安全性,来自它从不共享内存地址——你拿到的永远是它本人,不是它的影子。

















