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 @ 2017-03-17 18:07  嘿熊  阅读(646)  评论(0编辑  收藏  举报