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得到的数组也发生了变化。

posted @   嘿熊  阅读(647)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
· 零经验选手,Compose 一天开发一款小游戏!
点击右上角即可分享
微信分享提示