JavaScript中的值类型和引用类型
先抛出一个题目,阿里的笔试面试题(很基础,但确实是阿里的笔试题)
var a = {"x": 1};
var b = a;
a.x = 2;
a = {"x": 3};
console.log(b.x);
大家觉得最后在控制台输出的结果是多少?
如果你答案是2,那你就没必要接下去看了。如果不是。那你就接着看下去来解决你的疑惑吧!
JavaScript中的值类型和引用类型
在javascript里面有两种变量类型,一种是值类型,一种是引用类型。
值类型:数值、布尔型、null、undefined
引用类型:数组、对象、函数
值类型的变量的交换就就是普通的交换。比如:var a = 1; var b = a; a = 2;console.log(b);//结果是1。b不会因为a改变而改变
引用类型和值类型就不一样了。比如:var a = [1,2];var b = a;//这时候将a赋值b跟上面的值类型的赋值就不一样 。这里可以用指针来理解,声明的a变量其实就可以把他当作一个指向数组[1,2]的指针。
更形象点,可以这样理解:将[1,2]比作宝藏,a就是藏宝图。可以根据a找到[1,2]这个数组。其中 var b = a;就相当于复制了一个藏宝图给b,b就也可以找到[1,2]数组。明白了这个就好理解下面的东西了。
如果a[0] = 3;那么console.log(b)就会输出[3,2]。因为a[0] = 3直接改变可宝藏里面的东西。所有b得到的数组也发生了变化。
标签:
javascript
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
· 零经验选手,Compose 一天开发一款小游戏!