一个简单的JS问题

菠萝1084
  • 193

demo1

var a = {n:1}
var b = a
b.n = 3
console.log(a)

输出:{n: 3}

demo1

var a = 1
var b = a
b = 3
console.log(a)

输出: 1

能否简单的说明一下为什么 demo1 的值 a 会变化,demo2 的值 a 不会变化?

回复
阅读 1.1k
2 个回答
✓ 已被采纳

https://www.runoob.com/w3cnot...

对于下面的例子,a是基本类型的数据,它本身存的值就是这个数据,把它赋值给b,就是复制了一份过去,所以改变b不会影响a

对于上面的例子,a是引用类型的数据,a的值其实是对象{n:1}在内存中的地址,把它赋值给b,是把对象{n:1}的地址复制了一份过去,所以a和b本质上指向的还是同一个数据,对b的修改页当然会影响到a了

很白的小白
  • 131

Js中引用类型与基本类型的区别,基本类型复制存储在栈中,引用类型赋值是指针,指向堆中数据首地址,因此出现这种情况。

宣传栏